精华内容
下载资源
问答
  • python地理空间分析指南
    2020-12-03 19:19:21

    本文为《Python地理空间分析指南(第2版)》的读书摘录,顺便挖个坑,进一步对python的几个包做学习整理。

    本笔记的用途:了解python地理空间处理的技术框架和实现途径。

    第三章 地理空间技术概览

    一般来说,地理空间软件包不同程度上实现了以下4种高级核心功能:数据访问;几何计算(包括数据重投影);可视化;元数据工具。

    GDAL, OGR, GEOS和PROJ.4库是地理空间分析产业商业、开源软件的核心和灵魂。

    数据访问

    GDAL (The Geospatial Data Abstraction Library) 为栅格数据提供了一个单一、抽象的数据模型。

    OGR 处理矢量数据,X11/MIT开源授权协议。

    几何计算

    PROJ.4 投影库能够描述任何投影信息,为GDAL和OGR库处理矢量、栅格数据提供支持。

    CGAL 计算几何算法库

    JTS 是Java地理空间计算几何库,实现了SQL的开放地理空间联盟(OGC)简单要素标准。

    GEOS 开源几何引擎,JTS的C++版本实现。

    PostGIS 空间数据库,是PostgreSQL的一个模块,免费开源。

    可视化

    QGIS (Quantum GIS) 开源的地理信息系统,是基于GDAL/OGR库和GEOS库构建的,所以能使用PostGIS,并且支持这些软件包提供的数据源。

    OpenEV 最快的栅格数据查看器,支持GDAL/OGR库和PROJ.4库的所有功能,方便浏览和数据转换。

    ArcGIS

    元数据管理

    地理空间数据集的元数据能够遵循并保证数据集的完整性,而且可以追溯到数据生产商。格式正确的元数据还允许自动编目、索引搜索和数据集集成。

    GeoNetwork 是开源的、使用Java实现的管理地理空间数据的目录服务。

    Python库

    网络库 urllib ftplib zipfile xml beautifulsoup4 lxml

    Json库 json geojson osgeo.ogr

    shapefile文件 Pyshp

    import shapefile

    shp = shapefile.Reader("point.shp")

    for feature in shp.shapeRecords():

    point = feature.shape.points[0]

    rec = feature.record[0]

    print(point[0], point[1], rec)

    dbf文件 dbfpy3

    Shaplely库 是高级的Python风格的GEOS库几何操作的做,它完全依赖其他模块导入或导出数据,功能聚焦于几何操作方面。

    from shapely import wkt, geometry

    wktPoly = "POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))"

    poly = wkt.loads(wktPoly)

    print(poly.buffer(5.0).difference(poly).area) # 158.4137

    Fiona 模块为OGR库的数据访问功能提供了一套简洁的Python API,默认输出格式是GeoJSON。

    import fiona

    import pprint

    f = fiona.open("...")

    print(f.driver, f.crs, f.bounds, f.schema)

    pprint.pprint(f[1])

    GDAL

    from osgeo import gdal

    raster = gdal.Open("....tif")

    print(raster.RasterCount, raster.RasterXSize)

    PIL 图像编辑,升级版本Pillow,轻量级PNGCanvas,栅格化Shapefile文件

    GeoPandas

    import geopandas

    import matplotlib.pyplot as plt

    gdf = geopandas.GeoDataFrame

    census = gdf.from_file("....shp") # 打开并存储为GeoJSON格式

    census.plot()

    plt.show()

    Numpy

    pymysql 提供有限的空间功能

    pyFPDF 一种轻量级的创建包括地图等PDF文件的解决方案。

    Spectral Python 一款专门处理遥感应用的高级功能包。

    重投影

    Shapefile文件编辑

    .shp文件包含几何图形,.dbf文件包含几何图像相关的属性信息。

    import shapefile

    r = shapefile.Reader("M")

    print(r.bbox, r.shapeType, r.numRecords)

    # dbf文件是简单的数据库格式,类似行列式的电子表格结构,每一列通过标签定义它包含的信息。

    print(r.fields)

    # field name, field type, field length, decimal length

    # DeletionFlag, ...

    # 通过字段访问数据

    fieldNames = [item[0] for item in r.fields[1:]]

    name10 = fieldNames.index("NAME10")

    print(r.record(2)[name10])

    更多相关内容
  • 介绍Python地理信息处理方面的应用技巧
  • Python地理空间分析指南第2版,完整版,是由epub格式转换而来,值得学习!
  • Python地理空间分析指南 第2版 pdf文档
  • 本书内容结构清晰,示例完整,适合希望了解测绘数字化和分析的读者,也适合想使用Python进行空间地理分析、建模和GIS分析的开发人员及研究人员参考阅读。
  • 全书共分为10章,分别介绍了Python地理空间分析地理空间数据、地理空间技术、Python地理空间分析工具、Python与地理信息系统、Python与遥感、Python与高程数据、Python地理空间高级建模、实时数据、综合应用...
  • 全书共分为10章,分别介绍了Python地理空间分析地理空间数据、地理空间技术、Python地理空间分析工具、Python与地理信息系统、Python与遥感、Python与高程数据、Python地理空间高级建模、实时数据、综合应用...
  • 【实例简介】Python地理空间分析指南(第2版)的随书源代码,需要的朋友可以下载一下~~【实例截图】【核心代码】Python地理空间分析指南(第2版)源代码└── Python地理空间分析指南(第2版)源代码├── B04606_01_...

    【实例简介】

    Python地理空间分析指南(第2版)的随书源代码,需要的朋友可以下载一下~~

    【实例截图】

    【核心代码】

    Python地理空间分析指南(第2版)源代码

    └── Python地理空间分析指南(第2版)源代码

    ├── B04606_01_Code

    │   └── B04606_01_01_SimpleGIS.py

    ├── B04606_02_Code

    │   ├── B04606_02_01_structDemo.py

    │   ├── B04606_02_02_fmtDecode.py

    │   └── B04606_02_03_GeoJSON.py

    ├── B04606_04_Code

    │   ├── B04606_04_01-site-packages.py

    │   ├── B04606_04_02-urlretrieve.py

    │   ├── B04606_04_03-earthquake-data.py

    │   ├── B04606_04_04-ftp.py

    │   ├── B04606_04_05-ftp-url.py

    │   ├── B04606_04_06-zipfile.py

    │   ├── B04606_04_07-zipfile-loop.py

    │   ├── B04606_04_08-tarfile-create.py

    │   ├── B04606_04_09-tarfile-extract.py

    │   ├── B04606_04_10-cloud-zipfile.py

    │   ├── B04606_04_11-kml-minidom.py

    │   ├── B04606_04_12-kml-etree.py

    │   ├── B04606_04_13-make-kml-strings.py

    │   ├── B04606_04_14-make-kml-etree.py

    │   ├── B04606_04_15-gpx-soup.py

    │   ├── B04606_04_16-shapely-wkt.py

    │   ├── B04606_04_17-ogr-wkt.py

    │   ├── B04606_04_18-json.py

    │   ├── B04606_04_19-geojson.py

    │   ├── B04606_04_20-ogr.py

    │   ├── B04606_04_21-pyshp.py

    │   ├── B04606_04_22-dbfpy.py

    │   ├── B04606_04_23-shapely.py

    │   ├── B04606_04_24-fiona.py

    │   ├── B04606_04_25-gdal.py

    │   ├── B04606_04_26-numpy.py

    │   ├── B04606_04_27-PIL.py

    │   ├── B04606_04_28-PNGC.py

    │   ├── B04606_04_29-geopandas.py

    │   ├── B04606_04_30-pymysql.py

    │   └── B04606_04_31-PDF.py

    ├── B04606_05_Code

    │   ├── B04606_05_01-pyth_theo.py

    │   ├── B04606_05_02-pyth-wrong.py

    │   ├── B04606_05_03-radians.py

    │   ├── B04606_05_04-haversine.py

    │   ├── B04606_05_05-vincenty.py

    │   ├── B04606_05_06-bearing.py

    │   ├── B04606_05_07-utm2latlon.py

    │   ├── B04606_05_08-latlon2utm.py

    │   ├── B04606_05_09-reprojection.py

    │   ├── B04606_05_10-read-shp.py

    │   ├── B04606_05_11-change-shp.py

    │   ├── B04606_05_12-add-feature.py

    │   ├── B04606_05_13-add-field.py

    │   ├── B04606_05_14-merge.py

    │   ├── B04606_05_15-merge-dbfpy.py

    │   ├── B04606_05_16-split.py

    │   ├── B04606_05_17-pip.py

    │   ├── B04606_05_18-spatial-sel.py

    │   ├── B04606_05_19-attr-sel.py

    │   ├── B04606_05_20-fiona-attr-sel.py

    │   ├── B04606_05_21-dot-density.py

    │   ├── B04606_05_22-choropleth.py

    │   ├── B04606_05_23-excel.py

    │   ├── B04606_05_24-nmea.py

    │   ├── B04606_05_25-geocoder.py

    │   └── B04606_05_26-geopy.py

    ├── B04606_06_Code

    │   ├── B04606_06_01-swap-bands.py

    │   ├── B04606_06_02-histogram.py

    │   ├── B04606_06_03-stretch.py

    │   ├── B04606_06_04-clip.py

    │   ├── B04606_06_05-classify.py

    │   ├── B04606_06_06-threshold.py

    │   ├── B04606_06_07-extract.py

    │   ├── B04606_06_08-draw.py

    │   └── B04606_06_09-change.py

    ├── B04606_07_Code

    │   ├── B04606_07_01-shaded-relief.py

    │   ├── B04606_07_02-contour.py

    │   ├── B04606_07_03-drawContours.py

    │   ├── B04606_07_04-grid.py

    │   ├── B04606_07_05-dem2img.py

    │   ├── B04606_07_06-colorize.py

    │   └── B04606_07_07-mesh.py

    ├── B04606_08_Code

    │   ├── B04606_08_01-ndvi.py

    │   ├── B04606_08_02-ndvi-classify.py

    │   ├── B04606_08_03-flood-fill.py

    │   ├── B04606_08_04-least-cost_model.py

    │   ├── B04606_08_05-color_hillshade.py

    │   ├── B04606_08_05-least-cost-path.py

    │   ├── B04606_08_06-color_hillshade.py

    │   ├── B04606_08_06-least-cost-path.py

    │   ├── B04606_08_07-routing.py

    │   └── B04606_08_08-geolocate.py

    ├── B04606_09_Code

    │   ├── B04606_09_01-nextbus.py

    │   ├── B04606_09_02-nextmap.py

    │   ├── B04606_09_03-next-weather.py

    │   └── B04606_09_04-mobile-reporting.py

    ├── B04606_10_Code

    │   └── B04606_10_01-gpx-reporter.py

    └── readme.txt

    10 directories, 93 files

    展开全文
  • 全书共分为10章,分别介绍了Python地理空间分析地理空间数据、地理空间技术、Python地理空间分析工具、Python与地理信息系统、Python与遥感、Python与高程数据、Python地理空间高级建模、实时数据、综合应用...
  • Python有两个出色的地理编码库可供用户选择,它们分别是geocoder和geopy库。而且它们都提 供高级在线地理编码服务帮助用户实现地理位置编码程序的构建。geopy库甚至还能帮助用户将一个地理编码转换为经纬度以便匹配...

    1、地理化编码定义

    地理化编码是将街道位置信息转换为经纬度的过程。该操作常见于车辆导航系统和在线位置导航网站。

    Python有两个出色的地理编码库可供用户选择,它们分别是geocoder和geopy库。而且它们都提
    供高级在线地理编码服务帮助用户实现地理位置编码程序的构建。geopy库甚至还能帮助用户将一个地理编码转换为经纬度以便匹配与之相关的最近位置。

    2代码演示

    2.1 geocoder

    将对geocoder库做一个快速演示,并且默认使用谷歌地图作为其引擎:

    • 首先,将以geojson格式输出谷歌数据库中与该地址相关的所有信息。
    • 其次,输出WKT格式的经纬度
    import geocoder
    g = geocoder.google("1403 Washington Ave, New Orleans, LA 70130")
    print(g.geojson)
    print()
    print(g.wkt)
    

    注意:
    该库的文档还包含调用其他在线地理编码服务的说明,例如Bing地图或者雅虎地图。其中某些服务可能需要申请API密钥并且有访问限制。

    2.2 geopy

    接下来演示geopy库。在本示例中,将反向地理编码OpenStreetMap数据库。一旦找到和给定位置匹配的地址,将反向地理编码它们,相关代码如下:

    
    from geopy.geocoders import Nominatim
    g = Nominatim()
    location = g.geocode("88360 Diamondhead Dr E, Diamondhead, MS 39525")
    print(location.raw)
    
    # {'lon': '-89.3462139', 'osm_type': 'node',
    # 'type': 'yes', 'place_id': '25470846',
    # 'display_name': 'NVision Solutions Inc.,
    # 88360, Diamondhead Drive East, Diamondhead,
    # Hancock County, Mississippi, 39520,
    # United States of America', 'boundingbox':
    # ['30.3961462', '30.3962462', '-89.3462639',
    # '-89.3461639'], 'licence': 'Data ©
    # OpenStreetMap contributors, ODbL 1.0.
    # http://www.openstreetmap.org/copyright', 'osm_id':
    # '2470309304', 'importance': 0.421,
    # 'class': 'office', 'lat': '30.3961962'}
    
    rev = g.reverse("{},{}".format(location.latitude, location.longitude))
    print(rev)
    
    # Location(88360, Diamondhead Drive East, Diamondhead,
    # Hancock County, Mississippi, 39525,
    # United States of America, (30.39614105,
    # -89.3463617900784, 0.0))
    
    
    

    总结:

    《Python地理空间分析指南 第2版》学习笔记,仅供学习,如有侵权请联系删除。

    展开全文
  • Python3完成GIS开发和遥感分析的实用指南

    目录

    前言

    一、任务

    二、实现与解析

    1.引入库

    2.构造数据模型

    3.渲染地图元素

     4.执行查询操作以及完成绘图

    三、总结


    前言

    本书假定读者了解Pyhon、信息技术的基本知识,并且至少对地理空间分析有一定的认识。

    讲述的是第1章 Python与地理空间分析“牛刀小试”部分的代码实现和解析。


    一、任务

    现在,你已经对地理空间分析有了进一步的了解,接下来我们要着手使用Python构建一个名
    为SimpleGIS的GIS应用了。这个程序将使用地理数据模型构建一个完整的GIS应用,而且可以
    渲染专题地图,显示不同城市的人口数量。
    数据模型还将是结构化的,所以你可以进行一些基本的查询操作。SimpleGIS将会包含科罗
    拉多州的3个城市及其人口数量。
    更重要的一点是,我们将完全使用Pytohn代码实现这个小型系统的构建,从而展示Python语
    言的强大威力。当然我们还会用到Python标准库中的部分模块,但不会下载任何第三方应用包。

    笔者使用Python版本是3.9,IDE为VScode,其他IDE可以参考这个:推荐10 款最好的 Python IDE | 菜鸟教程 (runoob.com)

    二、实现与解析

    这一部分主要的解析都在注释中。

    1.引入库

    唯一使用的外部库是turtle,初学者常用的画图库。

    import turtle as t

    2.构造数据模型

    首先声明一些和所有城市相关的常量。

    # 在计算机科学中,将常用的数字放在方便记忆的变量中是普遍的做法。这个变量通常被称为常量。
    # 妙处在于,索引也可以这样。
    # 下面三个常量其实规定了列表中元素的先后顺序,即第一个是名称,第二个是点坐标(经纬度),第三个是人口数量。
    
    NAME = 0
    POINTS = 1
    POP = 2
    
    # 科罗拉多州,纬度在北纬37至41度之间,经度在西经102至109度之间,有5187582人。
    state = ["COLORADO", [[-109, 37],[-109, 41],[-102, 41],[-102,37]], 5187582]
    
    # 城市
    cities = []
    cities.append(["DENVER",[-104.98, 39.74], 634265])
    cities.append(["BOULDER",[-105.27, 40.02], 98889])
    cities.append(["DURANGO",[-107.88,37.28], 17069])

     然后定义地图尺寸大小和确定绘制边界,以及定义一个转换函数,用于将世界坐标(经纬度)转换成屏幕坐标。

    # 地图大小
    map_width = 400
    map_height = 300
    
    # 首先需要确定最大范围,即州的尺寸。
    # 先假定一个范围。有趣的是,假定的最小值很大,最大值反而很小。
    minx = 180
    maxx = -180
    miny = 90
    maxy = -90
    # 这个循环的妙处在于,即使要绘制的地图边界不是方方正正的,也可以确定边界值。
    # 实际上确定了最小外接矩形(MBR)。
    for x,y in state[POINTS]:
        if x < minx: minx = x
        elif x > maxx: maxx = x
        if y < miny: miny = y
        elif y > maxy: maxy = y
    # 第2步是计算州和绘图板之间的缩放比例.这个比例是用来将经纬度坐标转化成屏幕坐标的。
    # 我们获取州在x和y坐标上的尺寸,然后和地图的尺寸进行比较得到缩放比例:
    dist_x = maxx - minx
    dist_y = maxy - miny
    x_ratio = map_width / dist_x
    y_ratio = map_height / dist_y
    
    # 转换函数
    def convert(point):
        # lon:经度 lat:维度
        lon = point[0]
        lat = point[1]
        x = map_width - ((maxx - lon) * x_ratio)
        y = map_height - ((maxy - lat) * y_ratio)
        # turtle图形引擎是以屏幕中心为起点位置的,因此必须把坐标点的位置进行适当的偏移
        x = x - (map_width/2)
        y = y - (map_height/2)
        return [x,y]
    

     详细的说明如图:

     对convert函数的说明

    3.渲染地图元素

    首先画边界。

    # 开始画图
    t.up()
    # 这里单独为第一个位置设变量,是为了画出封闭图形,而不需要在坐标列表增加一个点。
    first_pixel = None
    for point in state[POINTS]:
        pixel = convert(point)
        if not first_pixel:
            first_pixel = pixel
        t.goto(pixel)
        t.down()
    t.goto(first_pixel)
    t.up()
    t.goto([0,0])
    t.write(state[NAME], align="center", font=("Arial",16,"bold"))
    

     然后绘制城市,注意这里使用convert函数的方法和上面不同的,显示了作者定义函数时的精巧构思。

    # 绘制城市
    for city in cities:
        pixel = convert(city[POINTS])
        t.up()
        t.goto(pixel)
        # 绘制城市位置
        t.dot(10)
        # 标记城市
        t.write(city[NAME] + ", Pop.: " + str(city[POP]), align="left")
        t.up()

     效果图

     4.执行查询操作以及完成绘图

    # 执行一个属性查询操作来确定人口最多的城市
    biggest_city = max(cities, key=lambda city:city[POP])
    t.goto(0,-200)
    t.write("The biggest city is: " + biggest_city[NAME])
    # 执行一个属性查询操作来确定最西边的城市
    western_city = min(cities, key=lambda city:city[POINTS])
    t.goto(0,-220)
    t.write("The western-most city is: " + western_city[NAME])
    # 关闭画笔
    t.pen(shown=False)
    # 使用t.done()可以保存窗体
    t.done()

    效果图


    三、总结

    本文简单介绍了“牛刀小试”部分的代码实现,其实数学原理也很简单,不需要高等数学就可以推导其中的坐标转换公式,可以自己动手画图、结合图形加深理解。

    展开全文
  • 第5章 Python地理信息系统 5.2方位计算 需要知道某直线起点和终点构成的方位信息。正北方向为0,顺时针转。 from math import atan2, cos, sin, degrees lon1 = -90.21 lat1 = 32.31 lon2 = -88.95 lat2 = 30.43 ...
  • 【实例简介】【实例截图】【核心代码】目录1.11.6 非监督分类1.12 牛刀小试1.12.1 Python简介1.12.2 构建SimpleGIS1.13 小结第2章 地理空间数据2.1 数据格式概览2.2 数据结构共同特征2.3 空间索引2.3.1 索引算法...
  • Python地理空间分析指南 第2版》学习笔记-5.5Shapefile文件编辑-下 往期内容请看 《Python地理空间分析指南 第2版》学习笔记-5.5Shapefile文件编辑-上 《Python地理空间分析指南 第2版》学习笔记-5.5Shapefile文件...
  • 转载地址:https://blog.csdn.net/jianbinzheng/article/details/80215228概述部分地理空间数据地理空间技术概览Python地理空间分析工具Python与地理信息系统Python与遥感Python与高程数据Python地理空间高级建模...
  • Python地理空间分析指南(第2版)》源码.zip.zip
  • 第5章 Python地理信息系统 本章主要学习Python处理矢量数据,包含以下内容: 距离测量 坐标转换 矢量数据重投影 Shapefile 文件编辑 海量数据过滤 专题地图创建 非GIS数据类型转换 地理化编码 本篇博文记录第5....
  • 第5章 Python地理信息系统 5.5Shapefile文件编辑 5.5.1-5.5.3 见上一篇文章 5.5.4Shapefile文件修改 5.5.5Shapefile文件合并 5.5.6Shapefile文件分割
  • 第一章 Python地理空间分析 构建SimpleGIS          书上的代码没注释,且有一点点错误,所以发文 代码 import turtle def convert(point): #当前点的X,Y坐标 lon = point[0] lat =...
  • 目前最流行的GPS数据类型是Garmin GPX,并且已经是业内事实上的标准,它是一种XML文件,遵循格式优良的XML文档规范。 另外还有一种早于XML和GPX的GPS数据格式,叫美国国家海洋电子...使用Python中pynmea库可以处理该
  • 5.7.1点密度计算 点密度地图表达了给定区域内点状符号的密度。 本次案例使用PNGCanvas模块输出地图。 数据 """Create a dot-density ... 《Python地理空间分析指南 第2版》学习笔记,仅供学习,如有侵权请联系删除。
  • 作 者 :(美)莱哈德(Joel Lawhead)出版发行 : 北京:人民邮电出版社 , 2017.04ISBN号 :7-115-44821-7页 数 : 317开本 : 16开主题词 : 地理信息系统-应用软件中图法分类号 : P208 ( 天文学、地球科学->测绘学->...
  • 5.6.1点包容性公式 主要利用光影投射法执行检查操作。 该方法会从测试点创建一条直线并穿过多边形,之后会计算其和多边形每条边相交后... 《Python地理空间分析指南 第2版》学习笔记,仅供学习,如有侵权请联系删除。
  • 本节书摘来自异步社区《Python地理空间分析指南(第2版)》一书中的第1章,第1.12节,作者: 【美】Joel Lawhead(莱哈德) 更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.12 牛刀小试 现在,你已经对...
  • 本节书摘来自异步社区《Python地理空间分析指南(第2版)》一书中的第1章,第1.9节,作者: 【美】Joel Lawhead(莱哈德) 更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.9 地理信息系统基本概念 在进行...
  • 本节书摘来自异步社区《Python地理空间分析指南(第2版)》一书中的第1章,第1.7节,作者: 【美】Joel Lawhead(莱哈德) 更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.7 地理空间分析和计算机编程 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,812
精华内容 724
热门标签
关键字:

python地理空间分析指南