以前我一直觉得Python的绘图工具与R语言ggplot2比起来,不够优雅,这也是我一直坚定的选择使用R+ggplot2深入的学习数据可视化的原因,ggplot2在坐标系的整合与兼容性和扩展性上确实技高一筹...最近偶然在学习Python可视化的过程中,了解到了geopandas,确实第一眼看着很眼熟,或许你第一眼就能把它与pandas联系起来。...今天要讲解的主角是R语言中的sf包和Python中的geopandas库。...巧合的是,python中的geopandas用了同样的 技术来简化空间数据可视化的复杂度,其核心理念也是通过压缩单个地理多边形为一个Simple Features,使得所有的地理多边形与其属性信息严格对齐...geopandas包同时支持导入shp素材和json素材,导入之后得数据结构与R语言中得sf导入之后得结构是一致得,地理多边形边界点信息都被压缩成了一个非常整齐的列表存储,列表内每一个单独的子项目都代表着一个多边形
历经10年迭代升级,geopandas充分完善了其在GIS数据分析上的功能,使得我们可以使用类似pandas的操作方式,便捷且高性能的开展各种常用的GIS分析运算,极大增强了Python在GIS分析领域的能力...今天的文章,费老师我就将带大家一起快速了解在全新的1.0版本中,新的功能特性、优化提升以及相关API的变动情况~ 2 geopandas 1.0版本介绍 如果你还未曾安装使用过geopandas,我最推荐的方式是新建虚拟环境...,并在虚拟环境中通过conda-forge源进行稳定安装,以当下非常流行的开源环境管理工具mamba(可参考我所写的教程)为例,在终端执行下列命令(目前推荐Python版本为3.9),静静等待,即可一步到位完成最新版...,快速生成泰森多边形: 2.1.12 新增contains_properly()方法 新增方法contains_properly(),用于快捷判断矢量A是否严格包含矢量B,与contains()方法的区别是...dwithin型空间关系判断 针对sjoin()方法,新增了dwithin型空间关系判断,使得我们可以在geopandas中真正意义上直接实现“匹配与目标要素距离在XXX以内的纪录行”: 2.2.2
其目标是尽可能地简化Python中的地理空间数据处理,减少对Arcgis、PostGIS等工具的依赖,使得处理地理空间数据变得更加高效简洁,打造纯Python式的空间数据处理工作流。...本系列文章就将围绕geopandas及其使用过程中涉及到的其他包进行系统性的介绍说明,每一篇将尽可能全面具体地介绍geopandas对应方面的知识。...可以理解为闭合的线或无孔多边形的边框,创建时传入数据的格式与Polygon相同。...() 图32 geopandas自带世界地图 查看其表格内容: 图33 使用.loc+条件筛选选择数据: 图34 使用.iloc选择数据: 图35 而除了这些常规的数据索引方式之外,geopandas...为GeoDataFrame添加了.cx索引方式,可以传入所需的空间范围,用于索引与传入范围相交的对应数据: # 选择与东经80度-110度,北纬0度-30度范围相交的几何对象 part_world =
Python中开展GIS分析的利器,可以帮助我们快捷地解决很多日常GIS操作需求。...这样的非法要素读到geopandas或是PostGIS等常用GIS工具中,在进行一些矢量计算操作时会触发拓扑错误问题,而今天的文章中,我们就来学习一下在geopandas中如何有效地解决此类的要素拓扑非法问题...2 在geopandas解决拓扑错误问题 2.1 geopandas中常见的要素拓扑错误情况 在geopandas中,要素的合法性(validity)是针对面要素、多部件面要素而言的,同其底层依赖的...2:边界线存在重叠 错误情况3:内部孔洞之间存在共边 错误情况4:内部孔洞与外边界共边 错误情况5:多部件面要素之间存在重叠 值得一提的是,除了查看要素的is_valid属性是否为True外...,非常舒服: 修复错误情况4:内部孔洞与外边界共边 针对内部孔洞与外边界共边情况下的修复结果,毕竟这种情况下涉及到的孔洞是不可能被保留的: 修复错误情况5:多部件面要素之间存在重叠 这种情况下的修复策略显而易见
这很好办,我们使用ArcGIS Pro中的投影工具进行转换 2)相机指向的方向或方向 heading θ 既然是需要正面的建筑照片,我们肯定是在道路上拍摄的,网页中的角度也是以道路上的点拍摄的,并且这个点最好要满足距离建筑足够近...=False) 2)使用Shapely获取建筑各边的中心点 要获取GeoPandas集合体(例如GeoSeries或GeoDataFrame)中每个多边形的外边界上所有中点,你可以使用Shapely库的几何对象方法和属性...简化建筑物 简化前后对比: 简化前后对比 2) 获取建筑各边中心点 接下来我们在ArcGIS软件中的notebook中进行获取建筑中心点的操作: 首先我选择了单个建筑input_polygon_feature_class...在步骤 1 中,建筑物外墙的中点(红点)投影到最近的街道,该点用作请求 GSV 的位置,在步骤二中,计算向量北与从请求点到外墙中点的向量之间的角度并将其输入Google 地图 API 作为相机角度。...《使用geopandas寻找街景点》的完整代码文件获取方式: 关注本公众号renhailab,选择点赞、在看或者转发本文之后,私信20231027获取代码。码字不易、多多点赞。
、PROJ等开源地理空间计算相关框架之上的,类似pandas语法风格的空间数据分析Python库,其目标是尽可能地简化Python中的地理空间数据处理,减少对Arcgis、PostGIS等工具的依赖,使得处理地理空间数据变得更加高效简洁...本系列文章就将围绕geopandas及其使用过程中涉及到的其他包进行系统性的介绍说明,每一篇将尽可能全面具体地介绍geopandas对应方面的知识,计划涵盖geopandas的数据结构、投影坐标系管理、...图20 is_valid 在shapely中涉及到很多拓扑计算操作时,对几何对象的合法性有要求,譬如定义多边形时坐标按顺序连线时穿过了之前定义的边就属于非法,因为geopandas对矢量对象的计算依赖于...图32 geopandas自带世界地图 查看其表格内容: ? 图33 使用.loc+条件筛选选择数据: ? 图34 使用.iloc选择数据: ?...图35 而除了这些常规的数据索引方式之外,geopandas为GeoDataFrame添加了.cx索引方式,可以传入所需的空间范围,用于索引与传入范围相交的对应数据: # 选择与东经80度-110
本篇文章,是关于在重要的地方做最小的改变,从而达到最大的效果。 问题的边界 在 vortex 公司,我们广泛使用 Python。Python 非常适合于原型设计,也非常适合于数据的科学计算。...或许,在生产环境中进行繁重的任务处理,matplotlib 不是合适的工具?既然代码中已经在使用 pandas 了,为什么不试试 geopandas 呢?...对每个多边形进行边界测试。 尽可能基于 32 位整数(比浮点更快)。 使用线程。 需要说明的是,Java 肯定不是这里的答案。Java 与 Python 的集成,真是太吓人了。...以下是实现的功能明细: 在 Rust 中实现 Python 类。 在构造函数中,存放 geojson 字符串数组,表示我们的多边形区域。...返回结果为 numpy 数组(便于与 Python pandas 集成),表示每个坐标集对应的多边形(如果有的话)。
大多数 GIS 软件和数据库都提供了一种机制来计算和使用数据图层的空间索引。QGIS 和 PostGIS 使用基于 R-Tree 数据结构的空间索引方案 - 它使用几何边界框创建分层树。...如果您使用 Python 进行地理处理,GeoPandas 库还提供了使用 .sidex 属性的基于 R-Tree 的空间索引的易于使用的实现。...赫尔辛基大学的 AutoGIS 课程有一个很好的例子,将空间索引与 geopandas 一起使用。 在这篇文章中,我想谈谈另一个名为H3 的空间索引系统。...在这篇文章中,我将向你展示如何创建使用点密度图geopandas和h3-py库在Python。 国家地理空间情报局的海事安全信息门户以反航运活动消息的形式提供所有海盗事件的形状文件。...由于落在网格单元中的所有点都具有相同的 id,我们可以简单地聚合具有相同网格 id 的所有行,以找到落在网格多边形中的所有点。
这是 Python 库 GeoPandas 的用武之地。 本文和大家一起学习如何使用 GeoPandas有效地可视化地理空间数据。...在下一节中,我们将一起学习如何使用一些常见的函数,如边界、质心和最重要的绘图方法。为了演示地理空间可视化的工作,让我们使用来自2021年奥运会数据集的Teams数据。...团队的数据集包含团队名称、项目、NOC(国家/地区)和事件列。在本练习中,我们将仅使用 NOC 和 项目 列。...详细信息在源代码中。 开始绘图 显示一个简单的世界地图 - 只有边界的地图 作为第一步,我们绘制基本地图——只有边界的世界。在接下来的步骤中,将为我们感兴趣的国家/地区着色。...国家参加的学科越多,颜色越深,反之亦然。等值线图为与数据变量相关的区域/多边形着色。
() 检查几何对象是否在某个多边形内 ddf.within(polygon) 此外,如果你有一个分布式的 dask.dataframe,你可以将 x-y 点的列传递给 set_geometry 方法来设置几何形状...例如,在合并或连接操作之前,仔细考虑是否所有列都需要参与操作。 使用更高效的空间连接 在使用dask_geopandas进行空间连接时,确保操作是高效的。...你的代码尝试使用geopandas.sjoin,但是应该使用dask_geopandas.sjoin。此外,确保在执行空间连接之前,两个数据集已经有了匹配的坐标参考系统(CRS)。...这样可以避免在每个分区上重复昂贵的CRS转换操作。 调整npartitions npartitions的选择对性能和内存使用有重大影响。太少的分区可能会导致单个分区过大,而太多的分区则会增加调度开销。...= dgd.read_file(boundary_shapefile, npartitions=16) # 确保边界shapefile与目标shapefile的CRS一致 join_dgdf
GeoPandas的基础使用见Python绘制数据地图1-GeoPandas入门指北。 GeoPandas的可视化入门见Python绘制数据地图2-GeoPandas地图可视化。...本文所有代码见:Python-Study-Notes GeoPandas推荐使用Python3.7版本及以上,运行环境最好是linux系统。...意思是将源地理图层与参考图层进行比较,以在源图层中标识与参考图层中相交的区域。使用identity的一个典型场景是当需要分析两个图层交集的时候。...在geopandas中,simplify函数可以用来简化多边形的形状,以减少地图数据的大小,同时也可以提高绘图的效率。当绘图数据特别大时,该函数很有用。...在汇总过程中,可以选择保留某些字段的信息,也可以对其他字段进行统计计算。
2 geopandas 0.11版本重要新特性一览 你可以在旧版本geopandas的基础上进行升级,也可以新建虚拟环境直接安装0.11.0版本,本着谨慎尝鲜的原则,我们可以使用下面的命令一口气完成新虚拟环境的创建...__version__)" 一切准备就绪,下面我们来一览此次更新中比较重要的几个特性: 2.1 更快的矢量文件读写 新版本中为read_file()与to_file()引入了参数engine用于指定读写常见矢量文件基于的引擎...,默认为原先的'fiona',可选'pyogrio',这是由geopandas开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如shapefile的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例...,其中呈现GEOMETRYCOLLECTION EMPTY的记录说明其与目标矩形没有交集,我们利用is_empty来反向筛选出发生裁切的矢量记录: 除此之外,你还可以直接将[minx, miny,...geopandas/releases/tag/v0.11.0查看完整的版本更新说明,总体而言,这次新版本更新带来的重要更新并不太多,但都颇为实用,你可以在自己的数据上使用一番。
1 简介 大家好我是费老师,就在前两天,Python生态中的GIS运算神器geopandas发布了其0.14.0新版本,在这次新版本更新中,不仅是新增了许多矢量计算API,还开始为日后正式发布1.0...python版本提升至3.9: 因此,推荐大家以3.9版本作为建立GIS运算Python环境的基础,这里我们以conda为例,直接建立新的虚拟环境来做演示(下面的命令中为了加速下载过程使用到相关国内conda...0.14版本底层依赖变动 在0.14版本中,geopandas底层将默认使用shapely(>=2.0版本)进行高性能矢量运算,因此geopandas仅会在shapely缺失但pygeos已安装时,才会调用...「最小凹多边形」,与convex_hull计算结果的对比示例如下: import random from shapely.geometry import MultiPoint # 示例GeoSeries...()方法 新增remove_repeated_points()方法,用于沿要素坐标串定义方向,将距离在阈值以内的坐标点视作重复点要素进行移除,默认阈值为0,你可以在实际应用中灵活调整阈值,从而起到简化要素的目的
python版本提升至3.9: 因此,推荐大家以3.9版本作为建立GIS运算Python环境的基础,这里我们以conda为例,直接建立新的虚拟环境来做演示(下面的命令中为了加速下载过程使用到相关国内...0.14版本底层依赖变动 在0.14版本中,geopandas底层将默认使用shapely(>=2.0版本)进行高性能矢量运算,因此geopandas仅会在shapely缺失但pygeos已安装时...()方法用于为矢量列中的每个要素计算最小凹多边形,与convex_hull计算结果的对比示例如下: import random from shapely.geometry import MultiPoint...新增offset_curve()方法 新增offset_curve()方法,用于为目标要素构建偏移曲线,即与原始要素相似但偏移一定的距离: 2.3.7 新增remove_repeated_points...()方法 新增remove_repeated_points()方法,用于沿要素坐标串定义方向,将距离在阈值以内的坐标点视作重复点要素进行移除,默认阈值为0,你可以在实际应用中灵活调整阈值,从而起到简化要素的目的
layer:str类型,当要读入的数据格式为地理数据库.gdb或QGIS中的.gpkg时,传入对应图层的名称 下面结合上述参数,来介绍一下使用geopandas.read_file()在不同情况下读取常见格式矢量数据的方法...图10 2.1.2 gdb与gpkg 对于Arcgis中的地理数据库gdb,以及QGIS中的GeoPackage,要读取其包含的矢量数据,就要涉及到图层的概念,对应geopandas.read_file...过滤 bbox过滤允许我们在read_file()中传入一个边界框作为参数bbox,格式为(左下角x, 左下角y, 右上角x, 右上角y),这样在读入的过程中只会保留几何对象与bbox有相交的数据记录...,下面我们仍然以上文中使用过的中国地图数据为例,我们在读入的过程中,传入边界框: from shapely import geometry data = gpd.read_file('geometry...蒙版过滤 蒙版过滤和bbox过滤功能相似,都是筛选与指定区域相交的数据记录,不同的是蒙版过滤通过mask参数可以传入任意形状的多边形,不再像bbox过滤那样只接受矩形: data = gpd.read_file
2 geopandas 0.11版本重要新特性一览 你可以在旧版本geopandas的基础上进行升级,也可以新建虚拟环境直接安装0.11.0版本,本着谨慎尝鲜的原则,我们可以使用下面的命令一口气完成新虚拟环境的创建...__version__)" 一切准备就绪,下面我们来一览此次更新中比较重要的几个特性: 2.1 更快的矢量文件读写 新版本中为read_file()与to_file()引入了参数engine用于指定读写常见矢量文件基于的引擎...,默认为原先的'fiona',可选'pyogrio',这是由geopandas开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如shapefile的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例...,其中呈现GEOMETRYCOLLECTION EMPTY的记录说明其与目标矩形没有交集,我们利用is_empty来反向筛选出发生裁切的矢量记录: 除此之外,你还可以直接将[minx, miny, maxx.../releases/tag/v0.11.0查看完整的版本更新说明,总体而言,这次新版本更新带来的重要更新并不太多,但都颇为实用,你可以在自己的数据上使用一番。
这些区域通常没有标准的行政界线,但是在必要的场合,你又非得在地图上将其边界展示出来,并且判断出那些点是在围栏内部,那些点是在围栏外部。...如下图所示,通过前期调研,假如你已经确认了目标分析区域如图中不规则多边形所示,通过地图围栏围栏可以拿到边界经纬度信息,然后需要甄别出待分析的原始数据中,那些点是在目标分析区域内部,并且单独摘出来进行更加细致的分析...以上过程存在两个难点,目标区域的边界信息如何获取?有了边界信息我如何对自己的原始数据中的点击进行点归属判断?以下内容就是要重点解决这个问题。 如何获取围栏边界信息?...radius = polygon.centroid.distance(Point(polygon.bounds[0],polygon.bounds[1])) #围栏中心与左下边界距离 使用Python...使用Python中shapely包(底层也是和R语言中的sf包基于相同的理论基础实现的)提供的点判别函数contains。
时,传入对应图层的名称 下面结合上述参数,来介绍一下使用geopandas.read_file()在不同情况下读取常见格式矢量数据的方法。...当文件在压缩包内的根目录时,使用下面的语法规则来读取数据: zip://路径/xxx.zip 譬如我们要读取图7所示的压缩包内文件: 图7 按照对应的语法规则,读取该类型数据方式如下: 图8 而当文件在压缩包内的文件夹中时...data.head() # 查看前5行 图12 2.1.3 GeoJSON 作为web地图中最常使用的矢量数据格式,GeoJSON几乎被所有在线地图框架作为数据源格式,在geopandas中读取GeoJSON...下面一一进行介绍: bbox过滤 bbox过滤允许我们在read_file()中传入一个边界框作为参数bbox,格式为(左下角x, 左下角y, 右上角x, 右上角y),这样在读入的过程中只会保留几何对象与...下面我们仍然以上文中使用过的中国地图数据为例,我们在读入的过程中,传入边界框: from shapely import geometry data = gpd.read_file('geometry/
1.了解几何对象 要素类中的每个要素都由一个或多个顶点组成,这些顶点定义了点、多段线或多边形要素。在点要素类的情况下,每个点要素由单个顶点组成。多段线和多边形要素由多个顶点组成。...更加熟悉,推荐使用geopandas和shapely。...使用游标时,可以在游标对象上的每次迭代中创建每个新特征,这样可以在处理许多特征时获得更好的性能。...为此我们准备的数据有: 中国34个省市区的空地图:中国各省份地图.shp 分年龄的人口统计数据:中国第七次人口普查-分年龄_性别的人口数据.xlsx 方法一:通过Python的pandas和geopandas.../resource/data2", "output.gdb") # 1.选择空的分省份地图要素 fc = ".
计算机视觉行业应该继续使用边界框注释吗? 在这篇文章中,我将分享一些与我在博士研究期间积累的图像注释相关的想法。 具体来说,我将讨论当前最先进的注释方法,它们的趋势和未来方向。...2.主流注释方法:边界框 最常见的注释技术是边界框,它是在目标对象周围拟合紧密矩形的过程。...3.对于被遮挡的物体,检测变得极其复杂。在许多情况下,目标物体覆盖的边界框区域不到20%,其余的作为噪声,使检测算法混淆,找到正确的物体(参见示例中的示例,下面的绿框)。 ?...在最好的情况下,使用这些工具生成多边形需要至少两次精确的点击(即生成边界框),并希望它能准确地捕获目标对象。 但是,建议的多边形通常不准确,并且可能比预期花费更多的时间(参见下面的示例)。 ?...即使与基本边界框注释相比,它需要至少2次精确点击来注释一个对象,我们在该段中只需要1次近似点击,这使得它比生成边界框更快。
领取专属 10元无门槛券
手把手带您无忧上云