首页
学习
活动
专区
圈层
工具
发布

(数据科学学习手札146)geopandas中拓扑非法问题的发现、诊断与修复

而我们平时工作研究中使用到的各种矢量数据,由于原始数据加工过程的不规范等问题,偶尔会导致某些要素自身的矢量数据信息非法。   ...shapely库一样,遵守着OGC(开放地理空间联盟)标准,在shapely高度完备的功能封装下,我们在日常创建面要素矢量时只需要注意别出现下面几种常见的情况就行: 错误情况1:坐标串自交叉 错误情况...2.2 对拓扑错误要素进行诊断   上面列举的是我们自行构建面要素、多部件面要素时常见的拓扑错误,但若我们的数据来自从外部读取的矢量文件:   查看is_valid属性仅能知晓各个矢量是否合法:   ...2.3 对拓扑问题进行修复   既然发现了拓扑非法问题,通常情况下我们肯定是希望可以尽可能地修复数据,而不是粗暴地予以删除,geopandas从0.12.0版本开始提供了基于shapely.validation.make_valid...,在不影响原始数据精度的情况下,对结果做一个非常小的缓存区即可: 修复错误情况2:边界线存在重叠   类似的,对于边界线存在重叠的情况,修复后的结果是将重叠部分作为线要素,剩余部分保留面要素:

1.6K20

Python地信专题 | 基于geopandas的空间数据分析-坐标参考系篇

,其中涉及到面积长度等计算的过程中提到了具体的计算结果与所选择的投影坐标系关系密切,投影坐标系选择的不恰当会带来计算结果的偏差,直接关乎整个分析过程的有效与否。...作为基于geopandas的空间数据分析系列文章的第二篇,通过本文你将会学习到geopandas中的坐标参考系管理。...;而上述两个示例中都带有towgs84=0,0,0,这是一个转换因子,在需要进行数据转换时使用。...的设置与再投影 在上一篇文章(数据科学学习手札74)基于geopandas的空间数据分析——数据结构篇中我们介绍了创建GeoSeries和GeoDataFrame的方法。...以上就是本文的全部内容,如有笔误之处望斧正! 下一篇文章将会介绍geopandas中的文件IO与基础地图制作,敬请期待。 -END-

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

    Google Earth Engine(GEE)——使用 GeoPandas 和 Uber 的 H3 空间索引进行快速多边形点分析

    大多数 GIS 软件和数据库都提供了一种机制来计算和使用数据图层的空间索引。QGIS 和 PostGIS 使用基于 R-Tree 数据结构的空间索引方案 - 它使用几何边界框创建分层树。...在这篇文章中,我将向你展示如何创建使用点密度图geopandas和h3-py库在Python。 国家地理空间情报局的海事安全信息门户以反航运活动消息的形式提供所有海盗事件的形状文件。...该数据集包含全球 8000 多个已记录盗版事件的点位置。这是原始点图层在 QGIS 中的可视化效果。 我们将通过在 H3 提供的六边形网格上聚合事件点来创建密度图。我们从导入库开始。...import geopandas as gpd from h3 import h3 GeoPandas 允许直接从 zip 文件中读取数据层。...这是显示生成的 hexbin 地图的图层,其中显示了世界各地的盗版热点。 从读取输入到创建聚合网格层的整个过程只需 2 秒多一点。将其与使用空间索引的 QGIS 模型进行比较,该模型至少需要 5 倍。

    1.3K10

    如何使用dask-geopandas处理大型地理数据

    这是因为这些操作往往需要大量的内存和CPU资源。 空间连接特别是在点数据量很大时,是一个资源密集型的操作,因为它需要对每个点检查其与其他几何对象(如行政区边界)的空间关系。...DataFrame,这里分为4个部分 ddf = dask_geopandas.from_geopandas(df, npartitions=4) 默认情况下,这会根据行来简单地重新分区数据。...python import dask.dataframe as dd import dask_geopandas 从 CSV 文件读取数据 ddf = dd.read_csv('...') # 使用你的文件路径替换...Parquet 和 Feather 文件格式的写入(以及读回): python 写入到 Parquet 文件 ddf.to_parquet("path/to/dir/") 从 Parquet 文件读取...dask_geopandas目前可能不支持直接写入文件格式如Shapefile,因为这通常涉及将数据集合并到单个分区。你可能需要先将数据写入Parquet等格式,或者手动分批写入。

    1.7K10

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

    2 geopandas 0.11版本重要新特性一览   你可以在旧版本geopandas的基础上进行升级,也可以新建虚拟环境直接安装0.11.0版本,本着谨慎尝鲜的原则,我们可以使用下面的命令一口气完成新虚拟环境的创建...,默认为原先的'fiona',可选'pyogrio',这是由geopandas开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如shapefile的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例...maxx, maxy]格式的输入传入经典的clip()裁切方法中,它会在底层直接调用clip_by_rect()并自动返回有效矢量裁切结果: 2.3 正确读写GIS文件中的日期时间字段   从0.11.0...版本开始,geopandas在面对日期时间型字段时,无论是写出到GIS文件还是从GIS文件读入,都可以保证正确解析为日期时间型:   你可以在https://github.com/geopandas/...geopandas/releases/tag/v0.11.0查看完整的版本更新说明,总体而言,这次新版本更新带来的重要更新并不太多,但都颇为实用,你可以在自己的数据上使用一番。

    77500

    (数据科学学习手札75)基于geopandas的空间数据分析——坐标参考系篇

    中的数据结构展开了较为全面的学习,其中涉及到面积长度等计算的过程中提到了具体的计算结果与所选择的投影坐标系关系密切,投影坐标系选择的不恰当会带来计算结果的偏差,直接关乎整个分析过程的有效与否。   ...作为基于geopandas的空间数据分析系列文章的第二篇,通过本文你将会学习到geopandas中的坐标参考系管理。...2.1.2 投影坐标系 地理坐标系虽然解决了我们在地球球面上定位的问题,但纬度和经度位置没有使用统一的测量单位,因为经度不变的情况下,纬度每变化1单位因为是对固定弧长的映射,所以真实距离是固定不变的...图16 3.1 CRS的设置与再投影   在上一篇文章(数据科学学习手札74)基于geopandas的空间数据分析——数据结构篇中我们介绍了创建GeoSeries和GeoDataFrame...的方法,实际上,现实的空间分析计算任务中,必须要为数据设置合适的CRS,在geopandas.GeoSeries()和geopandas.GeoDataFrame()中就包含参数crs,下面我们举例说明

    2.1K30

    六、处理几何数据【ArcGIS Python系列】

    每个顶点是由一对x、y坐标定义的位置。该图说明了点、多段线和多边形如何在笛卡尔坐标空间中由顶点定义。 使用几何体对象可以将要素写入要素类,我们可以从坐标值表创建要素。...实际使用的时候更多的还是从csv、json构建几何对象,还是直接读取shp、geojson等文件,这些库处理起来都会比arcpy顺手很多。...下面我们从x,y坐标对列表创建新多边形要素的完整实例来看两种方法的区别,首先演示**使用arcpy.CopyFeatures_management()**: import arcpy point = arcpy.Point...示例:从excel表格制作分年龄的人口普查要素文件 代码文件在4.2.7-处理几何数据代码练习和示例2.ipynb 此示例演示了如何通过表格数据制作分年龄、性别的人口_省份等级.shp文件,把人口数据在空间上呈现...-20230813115133806 3.读取省份地图 我们用geopandas读取地图数据,然后用pandas读取人口数据,然后通过merge方法进行匹配,最后用geopandas导出为shp文件。

    84210

    Pandas数据应用:地理信息系统

    引言在当今的大数据分析时代,地理信息系统(GIS)已经成为各个行业不可或缺的一部分。Pandas作为Python中强大的数据处理库,可以与GIS工具结合使用,进行空间数据分析、可视化等操作。...数据加载与转换问题描述:从CSV文件加载地理数据时,发现经纬度列无法正确识别为坐标点。 ...解决方案:确保CSV文件中的经纬度列名符合标准,如latitude和longitude,然后使用geopandas.GeoDataFrame创建地理数据框。...空间索引与查询问题描述:对大规模地理数据进行空间查询时,性能较差。 解决方案:使用geopandas的空间索引来加速查询。...解决方法:在处理前进行数据清洗,确保数据格式正确,例如经纬度应为浮点数。五、总结通过以上内容,我们了解了如何使用Pandas和Geopandas进行地理信息系统的数据处理与分析。

    54310

    使用kepler.gl可视化地理空间数据

    它接受CSV、GeoJSON、Pandas和geopandas数据帧形式的数据。...但当我们在3D里看到它的时候,一切都颠倒了。这就是为什么我喜欢kepler.gl,它允许你在不编写任何代码的情况下创建三维可视化效果。 ❝另外,如果你注意到的话,有一条弧线离纽约市很远。...在这里,我使用过滤器并选择了包含用于筛选数据集的取货时间的列。现在,我们可以查看当天不同情况下的取货地点热图。这幅图像为我们提供了一天中不同时间纽约市最繁忙地区的信息。...因为这次我们的数据集的格式不同,所以我们将使用不同的库来处理这个数据集。我们会用geopandas做这个。 Geopandas是一个Python库,它使使用Python处理地理空间数据更加容易。...Geopandas结合了各种顶级库,如numpy、shapely、fiona、geopy、descartes、matplotlib和Pandas。

    4.5K22

    使用Python实现子区域数据分类统计

    前言 将近两年前,我写过一篇同名文章(见使用Python实现子区域数据分类统计)。 当时是为了统计县域内的植被覆盖量,折腾了一段时间,解决了这个问题。...最近,又碰到了一个类似的需求,也需要统计某个小范围内的数据。简单来说,这个需求是将两个 shp 文件的任意两个对象做相交判断,最后形成一个新的空间对象集合,最后对此集合进行简单统计分析即可。...创建两个 GeoDataFrame 对象 geopandas 可以直接将 shp 文件读为 GeoDataFrame 对象,如下: shpdata = GeoDataFrame.from_file(path...([p3, p4]).buffer(0.2) 首先创建4个点对象,使用前两个创建第一个 GeoSeries 对象,后两个创建第二个 GeoSeries 对象。...参考http://geopandas.org/set_operations.html 大意是说当执行两个空间对象的相交、合并、取异操作的时候就可以使用此函数。

    1.3K30

    使用Python对大规模地理空间数据可视化

    作者通过引入datashader、geopandas 和 colorcet 等库,演示了如何处理和展示大规模数据,以及如何创建地理空间数据的可视化效果。...从读取空间数据到创建画布并聚合数据,再到使用 Datashader 进行数据渲染和导出图像,全面介绍了处理大规模地理空间数据的步骤和技巧。...印度尼西亚爪哇岛的建筑密度 下载了大型地理空间数据后,你可以会面临打不不开、各种操作卡顿等问题,那么您并不孤单。 这篇文章就是为了解决此类情况而量身定制的。...另一个示例数据集可以从 geoparquet 网站获得。...这就是使用 Python 进行地理空间大数据可视化的全部教程。在本教程中,我们学习了如何使用 Python 中的 Datashader 读取大数据、数据聚合以及创建可视化。希望本教程有用

    71110

    2.1 为gdal添加FileGDB插件

    实际上geopandas是具有写出矢量数据到gdb文件的能力的,只是需要额外配置一些软件库,今天的文章中,我就来带大家学习如何简单快捷地给geopandas补充gdb文件写出功能。...下载到本地解压后,因为我是64位windows系统,所以从bin64目录下复制FileGDBAPI.dll文件,粘贴到我们前面利用conda新建的虚拟环境根目录下的Library\bin里。   ...\envs\geopandas-write-gdb-test\Library\bin: 第二步,我们还需要下载ogr_FileGDB.dll这个文件,我是通过OSGeo4W下载的,有些麻烦,为了方便广大读者朋友使用.../demo.gdb', layer='面图层测试', driver='FileGDB')   查看目标gdb文件的所有图层名:   读入查看矢量,在读入时建议不设置driver参数,因为默认的OpenFileGDB...驱动读取gdb文件要更快:   其中线要素与面要素读进来不知为何变成了多部件要素类型,这其实不影响在geopandas中进行分析使用,但如果实在介意,可以直接基于数值唯一的某个字段进行dissolve

    3.4K10

    geopandas 0.11版本重要新特性一览

    2 geopandas 0.11版本重要新特性一览 你可以在旧版本geopandas的基础上进行升级,也可以新建虚拟环境直接安装0.11.0版本,本着谨慎尝鲜的原则,我们可以使用下面的命令一口气完成新虚拟环境的创建...,默认为原先的'fiona',可选'pyogrio',这是由geopandas开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如shapefile的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例..., maxy]格式的输入传入经典的clip()裁切方法中,它会在底层直接调用clip_by_rect()并自动返回有效矢量裁切结果: 2.3 正确读写GIS文件中的日期时间字段 从0.11.0版本开始...,geopandas在面对日期时间型字段时,无论是写出到GIS文件还是从GIS文件读入,都可以保证正确解析为日期时间型: 你可以在https://github.com/geopandas/geopandas.../releases/tag/v0.11.0查看完整的版本更新说明,总体而言,这次新版本更新带来的重要更新并不太多,但都颇为实用,你可以在自己的数据上使用一番。

    84520

    六、处理几何数据【ArcGIS Python系列】

    每个顶点是由一对x、y坐标定义的位置。该图说明了点、多段线和多边形如何在笛卡尔坐标空间中由顶点定义。 使用几何体对象可以将要素写入要素类,我们可以从坐标值表创建要素。...实际使用的时候更多的还是从csv、json构建几何对象,还是直接读取shp、geojson等文件,这些库处理起来都会比arcpy顺手很多。...下面我们从x,y坐标对列表创建新多边形要素的完整实例来看两种方法的区别,首先演示**使用arcpy.CopyFeatures_management()**: import arcpy point = arcpy.Point...示例:从excel表格制作分年龄的人口普查要素文件 代码文件在4.2.7-处理几何数据代码练习和示例2.ipynb 此示例演示了如何通过表格数据制作分年龄、性别的人口_省份等级.shp文件,把人口数据在空间上呈现...-20230813115133806 3.读取省份地图 我们用geopandas读取地图数据,然后用pandas读取人口数据,然后通过merge方法进行匹配,最后用geopandas导出为shp文件。

    79110

    使用 Rust 极致提升 Python 性能:图表和绘图提升 24 倍,数据计算提升 10 倍

    无需做假设,我们的出发点必须是先测量这段代码。 我创建了代码的一个副本(复制/粘贴即可),但对其进行了修改,以便于可以处理一个小数据集。并在将来,对不同的技术进行比较。...或许,在生产环境中进行繁重的任务处理,matplotlib 不是合适的工具?既然代码中已经在使用 pandas 了,为什么不试试 geopandas 呢?...然而,这是一个灾难,我们增加了 10 倍的运行时间!Geopandas(以及它依次调用的其它库)使用了 423 个堆栈帧,而 matplotlib 只使用了 5 个堆栈帧,我觉得这非常惊人。...我们可以: 尝试将数据分块,然后使用多进程 multi-processing 模块处理(在 Python 中是不推荐的),从而利用更强大的云虚拟机,用来支撑 matplotlib 计算。...否则,这篇博文会很无聊的…… 测试数据是完全相同的。 “使用 Rust,我们已经将 matplotlib 的处理时间,从 29.8 秒减少到 2.9 秒。”

    2.5K31

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

    作为基于geopandas的空间数据分析系列文章的第三篇,通过本文你将会学习到geopandas中的文件IO。...2 文件IO 2.1 矢量文件的读入 geopandas将fiona作为操纵矢量数据读写功能的后端,使用geopandas.read_file()读取对应类型文件,而在后端实际上是使用fiona.open...layer:str类型,当要读入的数据格式为地理数据库.gdb或QGIS中的.gpkg时,传入对应图层的名称   下面结合上述参数,来介绍一下使用geopandas.read_file()在不同情况下读取常见格式矢量数据的方法...图12 2.1.3 GeoJSON   作为web地图中最常使用的矢量数据格式,GeoJSON几乎被所有在线地图框架作为数据源格式,在geopandas中读取GeoJSON非常简单,只需要传入文件路径名称即可...,不像geopandas.read_file()可以根据传入的文件名称信息自动推断类型,我们在写出矢量数据时就需要使用driver参数来声明文件类型: ESRI Shapefile   我们将上文最后一次读入的

    2.6K31

    (数据科学学习手札84)基于geopandas的空间数据分析——空间计算篇(上)

    2 基于geopandas的矢量计算 geopandas中的矢量计算根据性质的不同可分为以下几类: 2.1 构造型方法 geopandas中的构造型方法(Constructive Methods)指的是从单个...图3   在本系列文章第一篇中介绍过shapely对矢量数据格式的合法性有一定规定,如多边形不能自交叉,可以通过is_valid()方法判断几何对象是否合法,而buffer()有一个隐藏功能就是其可以通过对非法的几何对象创建距离为...图5 simplify()   当原始的矢量数据因为形状复杂,包含的点较多时,会导致其文件体积较大,如果我们需要在在线地图上叠加它们,太大体积的矢量数据不仅会拖慢网络传输速度,也会给图形的渲染带来更大的压力...,这时对矢量数据进行简化就非常有必要,geopandas中沿用shapely中的simplify()方法,帮助我们对过于复杂的线和面进行简化,和QGIS中简化矢量的方法一样,simplify()使用了科学的...图24   从图24中可以看出,在how='identity'条件下,所有df1中不与df2相交的部分,以及两者相交的部分作为返回结果,且每个相交的部分都变为单独的要素带上所有涉及的属性字段,而df1中不涉及相交的部分则仍然以

    4.5K31

    使用Python和Geopandas进行地理数据可视化的实用指南

    更复杂的地理数据操作除了上述基本操作外,Geopandas还支持更复杂的地理数据操作,如空间缓冲区、空间叠加、地理拓扑关系分析等。...结论与展望通过本文的介绍和案例演示,我们了解了如何使用Python和Geopandas进行地理数据的分析和可视化。...数据探索与处理:加载数据后,可以进行一些基本的探索和处理,如查看数据的前几行、列名、数据类型等。...数据保存与导出:可以使用Geopandas将地理数据保存为Shapefile、GeoJSON等格式的文件。数据投影与坐标转换:Geopandas支持数据投影和坐标转换,可以将地图投影为不同的投影方式。...通过本文的学习,读者可以掌握使用Python和Geopandas处理和可视化地理数据的基本方法,为实际应用提供支持和指导。

    1.4K10

    (数据科学学习手札111)geopandas 0.9.0重要新特性一览

    本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介   就在几天前,geopandas释放了其最新正式版本.../cloud/conda-forge -y 2.1 read_file可直接读取存放单个矢量文件的zip压缩包   在以前的版本中,当我们的矢量文件存放在zip压缩包内时,使用gpd.read_file...()直接读取时需要传入特殊格式的zip路径表达式(详见我以前撰写的geopandas系列教程文件IO篇),但在0.9.0版本中,当你的zip压缩包内只有单一图层的文件时,直接就可读取: ?...GeoDataFrame或GeoSeries自动拆分为每行包含单要素的结果,但熟悉pandas的小伙伴一定知道在pandas中有同名方法,用于将元素为数组类型如列表的单行记录拆成单元素构成的多行记录。...而以前版本geopandas中的explode()方法是不兼容pandas的,这意味着如果你既需要多部件矢量要素拆分,又需要按照数组型元素拆分,就得在geopandas与pandas的数据结构之间转来转去

    1K20

    geopandas 0.9.0重要新特性一览

    ❝本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 就在几天前,geopandas释放了其最新正式版本...read_file可直接读取存放单个矢量文件的zip压缩包 在以前的版本中,当我们的矢量文件存放在zip压缩包内时,使用gpd.read_file()直接读取时需要传入特殊格式的zip路径表达式(详见我以前撰写的...geopandas系列教程「文件IO篇」),但在0.9.0版本中,当你的zip压缩包内只有单一图层的文件时,直接就可读取: 图2 2.2 新增对wkt与wkb格式的直接支持 在以前版本的geopandas...或GeoSeries自动拆分为每行包含单要素的结果,但熟悉pandas的小伙伴一定知道在pandas中存在着同名方法,用于将元素为数组类型如列表的单行记录拆成单元素构成的多行记录。...而以前版本geopandas中的explode()方法是不兼容pandas的,这意味着如果你既需要多部件矢量要素拆分,又需要按照数组型元素拆分,就得在geopandas与pandas的数据结构之间转来转去

    1.1K20
    领券