学习
实践
活动
专区
工具
TVP
写文章

(数据科学学习手札77)基于 geopandas 的空间数据分析——文件IO

作为基于 geopandas 的空间数据分析系列文章的第三篇, 通过 本文你将会学习到 geopandas 中的文件IO。 2.1.1 shapefile 作为非常常见的一种矢量文件格式, geopandas shapefile 提供了很好的读取和写出支持,下面分为不同情况来介绍: 完整的 shapefile 使用 geopandas 来读取这种形式的 shapefile 很简单: import geopandas as gpd data = gpd.read_file('geometry/china_provinces 缺少投影的 shapefile shapefile 中缺失.prj文件时,使用 geopandas 读入后形成的GeoDataFrame会缺失crs属性: 读取zip压缩包中的文件 geopandas 通过 传入特定语法格式的文件路径信息,以支持直接读取.zip格式压缩包中的 shapefile 文件,主要分为两种情况。

1.1K 3 1

Python地信专题 | 基于 geopandas 的空间数据分析-文件IO篇

作为基于 geopandas 的空间数据分析系列文章的第三篇, 通过 本文你将会学习到 geopandas 中的文件IO。 本文使用到的所有数据都可以在文章开头提及的Github仓库对应本文路径下找到: 2.1.1 shapefile 作为非常常见的一种矢量文件格式, geopandas shapefile 提供了很好的读取和写出支持 下面分为不同情况来介绍: 完整的 shapefile 如图2,这是一个完整的 shapefile : 使用 geopandas 来读取这种形式的 shapefile 很简单: import geopandas 时,可以直接读取该文件夹: 读取zip压缩包中的文件 geopandas 通过 传入特定语法格式的文件路径信息,以支持直接读取.zip格式压缩包中的 shapefile 文件,主要分为两种情况。 行过滤的功能就比较简单, 通过 参数rows控制读入原数据的前若干行,可以用于在读取大型数据时先快速查看前几行以了解整个数据的格式: 2.2 矢量文件的写出 在 geopandas 中使用to_file

746 1 0
  • 广告
    关闭

    【玩转 GPU】有奖征文

    精美礼品等你拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    (数据科学学习手札140)详解 geopandas 中基于pyogrio的矢量读写引擎

    图片 2 详解 geopandas 中的pyogrio读写引擎 geopandas 0.11版本之后新增的pyogrio引擎,基于 geopandas 团队开发的同名Python库,其基于OGR,而OGR则是著名的开源栅格空间数据转换框架 ()的读取引擎,获取大幅度性能提升的同时也拥有了众多的新功能参数,其中比较实用的有: 2.1.1 利用columns参数指定需要读入的字段   开启pyogrio引擎后,我们可以 通过 设置参数columns sql,可以帮助我们直接书写SQL语句对原数据进行提取(注意,其执行顺序先于上述其他过滤类参数):   但要注意的是,目前pyogrio引擎的sql参数,在读取诸如含有中文等unicode字符信息的 shapefile 文件时,不能正常的解析内容,而针对GeoJSON、gpkg等其他格式矢量文件时则一切正常: GeoJSON文件正常 gpkg文件正常 shapefile 文件乱码,亲测即使指定encoding也无效   所以现阶段建议读取 shapefile 文件时,可以使用columns+where的组合方式代替sql以实现同样的效果。

    328 1 0

    (数据科学学习手札80)用Python编写小工具下载OSM路网数据

    用户 通过 输入指定城市的名称并检索,等待数据资源加载完成之后就可以在网页中看到渲染好的城市路网,以重庆为例: 了解了上述步骤之后,我们利用requests、 geopandas 等库仅用不到100行代码就可以参考上述过程,提取所需的 shapefile 或GeoJSON文件保存到本地,具体的代码部分本文不做详细说明,我将这部分功能封装到文章开头对应 2.2 使用方式   按照上文所述的地址下载对应脚本之后(请提前安装完成requests、 geopandas 、pandas以及tqdm这几个三方库),记住其所在路径,接着在其他脚本开头导入模块部分添加: 如果你想要下载保存JSON格式的数据,换成downloader.download_geojson(path)即可,而如果你想要批量下载 多个 地区的数据,结合for循环即可,如下例: # 多个 地区路网下载 (path='保存路径')   等待一段时间后,我们area_list里 多个 不同级别行政区的路网数据便下载完成: ?

    908 1 0

    用Python编写小工具下载OSM路网数据

    以重庆为例: 通过 对该网站进行抓包和源码分析,我弄明白了其工作流程大致如下: Step1: 根据用户输入的城市名称,利用OSM官方的API进行模糊匹配,获取可能的对象列表: Step2: 再 通过 网站自带的API获取对应的.pbf格式数据,或overpass的API获取JSON格式的矢量数据。 Step3: 渲染路网: 了解了上述步骤之后,我们利用requests、 geopandas 等库仅用不到100行代码就可以参考上述过程,提取所需的 shapefile 或GeoJSON文件保存到本地 2.2 使用方式 提示:请提前安装完成requests、 geopandas 、pandas以及tqdm这几个三方库。 而如果你想要批量下载 多个 地区的数据,结合for循环即可,如下例: # 多个 地区路网下载 area_list = ['北京市', '重庆市江北区', 'Tokyo', 'Boston', '台湾省'] for

    445 2 0

    Geopandas 一行代码算出每个省的面积

    因此在本教程中,我只推荐使用conda安装 geopandas : conda install geopandas 一行语句即可完成安装。 2.基本使用 设定坐标绘制简单的图形: 这里有一个重要且强大的用法, 通过 area属性, geopandas 能直接返回这些图形的面积: >>> print(g.area) 0 0.5 1 1.0 2 1.0 dtype: float64 不仅如此, 通过 plot属性函数,你还可以直接生成matplotlib图。 3.绘制并算出每个省的面积 此外,它最大的亮点是可以 通过 Fiona(底层实现,用户不需要管),读取比如ESRI shapefile (一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式)。 同样,这个 shapefile 是省级行政区的,每一个省级行政区都被划分为一个区块,因此可以一行语句算出每个省级行政区所占面积: print(maps.area) # 0 4.156054e+11

    834 2 0

    #Python实战#神器 Geopandas 一行代码算出每个省面积

    由于 geopandas 涉及到许多第三方依赖,pip安装起来非常麻烦。 因此在本教程中,我只推荐使用conda安装 geopandas : conda install geopandas 一行语句即可完成安装。 area属性, geopandas 能直接返回这些图形的面积: >>> print(g.area) 0    0.5 1    1.0 2    1.0 dtype: float64 不仅如此, 通过 plot 3.绘制并算出每个省的面积 此外,它最大的亮点是可以 通过 Fiona(底层实现,用户不需要管),读取比如ESRI shapefile (一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式)。 读取出来的图形如下: [b8eb596aa6574ef5bfddbc4393ea803f~tplv-k3u1fbpfcp-zoom-1.image] 同样,这个 shapefile 是省级行政区的,每一个省级行政区都被划分为一个区块

    275 2 0

    python与地理空间分析(一)

    下面将简单介绍击中常用的数据格式: Shapefile 文件 使用最普遍的地理空间格式是Esri的 Shapefile 文件,可以 通过 arcgis软件或者第三方转换工具包将任意格式的矢量数据转换成 Shapefile Shapefile 文件格式是有 多个 文件组成,最重要的文件包括3种,.shp、.shx、.dbf文件。 地理空间栅格数据常用来存放卫星遥感数据,使用一个像元对应的地面距离来表达空间分辨率;此外栅格数据可以包含 多个 光谱波段的数据,例如常用的可见光以及红外波段,有的像高光谱数据,会包含成百上千个波段数据,可以 通过 不同波段的组合生成不同的专题地图 GeoPandas GeoPandas 是由Shapely,Fiona,PyProj,matplotlib以及其他必需的库一同构建的Pandas的地理空间扩展。 下面的示例将会打开一个 ShapeFile 文件并将其转存为GeoJSOM格式,之后使用matplotlib库创建地图 import geopandas import matplotlib.pyplot as

    6K 4 2

    (数据科学学习手札139) geopandas 0.11版本重要新特性一览

    2 geopandas 0.11版本重要新特性一览   你可以在旧版本 geopandas 的基础上进行升级,也可以新建虚拟环境直接安装0.11.0版本,本着谨慎尝鲜的原则,我们可以使用下面的命令一口气完成新虚拟环境的创建 /anaconda/pkgs/main -y conda activate geopandas -env conda install geopandas =0.11.0 pygeos pyogrio -c 开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如 shapefile 的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例,新的IO引擎带来近5倍的读取性能提升:   以及同样接近5 GeoDataFrame的方法clip_by_rect(minx, miny, maxx, maxy),可传入目标矩形坐标范围,快速裁切出矩形范围内的矢量,譬如我们基于前面已经读入的广州市建筑物轮廓数据, 通过 下面的函数随机生成边长 在面对日期时间型字段时,无论是写出到GIS文件还是从GIS文件读入,都可以保证正确解析为日期时间型:   你可以在https://github.com/ geopandas / geopandas /releases

    211 0 0

    geopandas 0.11版本重要新特性一览

    2 geopandas 0.11版本重要新特性一览 你可以在旧版本 geopandas 的基础上进行升级,也可以新建虚拟环境直接安装0.11.0版本,本着谨慎尝鲜的原则,我们可以使用下面的命令一口气完成新虚拟环境的创建 /anaconda/pkgs/main -y conda activate geopandas -env conda install geopandas =0.11.0 pygeos pyogrio -c 开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如 shapefile 的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例,新的IO引擎带来近5倍的读取性能提升: 以及同样接近5倍的写出性能提升 GeoDataFrame的方法clip_by_rect(minx, miny, maxx, maxy),可传入目标矩形坐标范围,快速裁切出矩形范围内的矢量,譬如我们基于前面已经读入的广州市建筑物轮廓数据, 通过 下面的函数随机生成边长 在面对日期时间型字段时,无论是写出到GIS文件还是从GIS文件读入,都可以保证正确解析为日期时间型: 你可以在https://github.com/ geopandas / geopandas /releases

    279 2 0

    python与地理空间分析(3)shp文件操作

    的字典和列表等数据类型一模一样,可以 通过 python自带的json库直接解析。 Shapefile 文件的结构包括 多个 文件,最重要的文件包括.shp,.shx,.dbf以及.prj文件: 文件扩展 作用 备注 .shp 用于存储要素几何的主文件,其中包括几何图形 必要文件,有的软件只需要 shp文件 .shx 形状要素索引文件,适当尺寸的几何元素索引信息可以加快访问速度 必要文件必须和shp文件在一起 .dbf 数据库文件,其中包含几何元素的属性信息 必要文件,可以 通过 excel打开,查看属性信息 文件的第三方包,例如PyShp,Shapely,Fiona, GeoPandas 以及basemap和cartopy包对shp文件的可视化,但大多都是基于OGR库,因此本文主要介绍利用OGR库对shp文件的处理 GDAL库由OGR和GDAL项目 合并 而来,GDAL主要用于空间栅格数据的读写,OGR主要用于空间要素矢量矢量数据的解析。此外,空间参考及其投影转换使用开源库 PROJ.4进行。

    9.4K 7 1

    Python可视化与basemap数据地图系列1

    最近在梳理Python中可以制作数据地图的可视化工具包,分别实践了 geopandas 、folium、Basemp, 通过 对比发现,静态地图中最为成熟的最终还得是Basemap工具,它是 Basemap工具在地理信息读写、坐标映射、空间坐标转化与投影等方面做的要比 geopandas 更加成熟,它可以使用常规的地图素材数据源(shp)作为底图进行叠加绘图,效果与精度控制比较方便,图表质量堪比 name.append(i) return(name) Domestic["Province"] = correct(Domestic["Province"]) 3、 合并 本地经纬度数据 urcrnrlon=150,urcrnrlat=55,projection='poly',lon_0 = 116.65,lat_0 = 40.02,ax = ax) basemap.readshapefile( shapefile

    1.4K 5 0

    气象绘图——白化杂谈

    不过大佬为了丰富白化功能,增添了一个region参数,使得我们能够凭关键词筛选要白化的省份,并且不使用cartopy中的geos_to_path命令,而是使用的 shapefile 库包来读取边界。 ac.collections: collection.set_clip_path(path,transform=ax2.transData) 同样的等值线也可以用这种方法白化: 上述只是 通过 普通子图的白化推广到地图子图的白化 这种方法的过程都是如下: 通过 地图库包获取当前shp文件信息→将geometry转化为path→绘制等值线→使用得到的path对等值线的collection进行裁剪。 三、 geopandas .clip白化 本方法我是第一次在DataCharm公号上看到的,具体使用的就是 geopandas 自带的clip功能。推文中说道,该方法适合plotnine库包。 import numpy as np import cartopy.crs as ccrs import cartopy.io.shapereader as shpreader import shapefile

    18 2 0

    GeoPandas 绘制超高颜值数据地图

    这是 Python 库 GeoPandas 的用武之地。 本文和大家一起学习如何使用 GeoPandas 有效地可视化地理空间数据。 什么是 GeoPandas GeoPandas 基于Pandas。它扩展了 Pandas 数据类型以包含几何列并执行空间操作。因此,任何熟悉Pandas的人都可以轻松采用 GeoPandas 。 GeoDataFrame包含一个或 多个 GeoSeries(延伸PandasSeries)每个都包含在一个不同的几何形状的投影(GeoSeries.crs)。 虽然GeoDataFrame可以有 多个 GeoSeries列,但其中只有一个是活动几何图形,即所有几何操作都在该列上。 在下一节中,我们将一起学习如何使用一些常见的函数,如边界、质心和最重要的绘图方法。 但是我们 通过 将这些国家/地区涂成灰色来使这一点更加明显。我们可以使用带有纯色或带有颜色和图案的 missing_kwds。

    2.7K 2 1

    【详细总结】cnmaps、maskout、salem的正确打开方式

    import shapefile from matplotlib.path import Path from matplotlib.patches import PathPatch from shapely.geometry import Reader, natural_earth import matplotlib.pyplot as plt import matplotlib.ticker as mticker import geopandas data.nc') TP_shp = '/work/home/zhxia/my_tool/TP_shp/TPBoundary_new_2021/TPBoundary_new(2021).shp' shp = geopandas .read_file ax.xaxis.set_major_formatter(lon_formatter) ax.yaxis.set_major_formatter(lat_formatter) plt.show() cnmaps选取中国区域 通过 裁剪图片的方法 draw_map(map_polygon, color='k', linewidth=1) ax.set_extent(map_polygon.get_extent(buffer=1)) plt.show() 通过 掩膜数据的方法

    16 1 0