首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python地信专题 | 基于geopandas的空间数据分析—数据结构篇

本系列文章就将围绕geopandas及其使用过程中涉及到的其他包进行系统性的介绍说明,每一篇将尽可能全面具体地介绍geopandas对应方面的知识。...作为基于geopandas的空间数据分析系列文章的第一篇,通过本文你将会学习到geopandas中的数据结构。...通过它我们可以自动下载安装好所有geopandas的必要依赖包而无需手动繁琐地去安装它们。 在完成安装后,下面我们开始对geopandas的系统性学习之旅。...()方法绘制有孔多边形的一个bug,即外部边框与内部孔洞创建时坐标 # 方向同为顺时针或顺时针时内部孔洞会自动被填充,如果你对这个bug感兴趣,可以前往 # https://github.com/geopandas...intersection方法来取得这两个几何对象的相交部分,出现了拓扑逻辑错误: 图22 查看s_.is_valid,可以看出第一个自相交的多边形非法: 图23 boundary boundary返回每个几何对象的低维简化表示

1.9K20

(数据科学学习手札74)基于geopandas的空间数据分析——数据结构篇

本系列文章就将围绕geopandas及其使用过程中涉及到的其他包进行系统性的介绍说明,每一篇将尽可能全面具体地介绍geopandas对应方面的知识,计划涵盖geopandas的数据结构、投影坐标系管理、...作为基于geopandas的空间数据分析系列文章的第一篇,通过本文你将会学习到geopandas中的数据结构。...()方法绘制有孔多边形的一个bug,即外部边框与内部孔洞创建时坐标 # 方向同为顺时针或顺时针时内部孔洞会自动被填充,如果你对这个bug感兴趣,可以前往 # https://github.com/geopandas...图20 is_valid   在shapely中涉及到很多拓扑计算操作时,对几何对象的合法性有要求,譬如定义多边形时坐标按顺序连线时穿过了之前定义的边就属于非法,因为geopandas对矢量对象的计算依赖于...图25 convex_hull convex_hull返回每个几何对象的凸包,Polygon格式,即恰巧包含对应几何对象的凸多边形: import numpy as np # 利用独立的正态分布随机数创建两个

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

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

    1.了解几何对象 要素类中的每个要素都由一个或多个顶点组成,这些顶点定义了点、多段线或多边形要素。在点要素类的情况下,每个点要素由单个顶点组成。多段线和多边形要素由多个顶点组成。...每个顶点是由一对x、y坐标定义的位置。该图说明了点、多段线和多边形如何在笛卡尔坐标空间中由顶点定义。 使用几何体对象可以将要素写入要素类,我们可以从坐标值表创建要素。...使用游标时,可以在游标对象上的每次迭代中创建每个新特征,这样可以在处理许多特征时获得更好的性能。...示例:从excel表格制作分年龄的人口普查要素文件 代码文件在4.2.7-处理几何数据代码练习和示例2.ipynb 此示例演示了如何通过表格数据制作分年龄、性别的人口_省份等级.shp文件,把人口数据在空间上呈现...通常,这是做研究的基础工作,方便了解我们数据在空间上是如何分布的,比如横向对比每个省份之间的总人口差异有哪些,每个省份年龄构成差异有哪些,年龄结构和经济的关系,你可以纵向对比多次人口普查在空间上的差异,

    47010

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

    1.了解几何对象 要素类中的每个要素都由一个或多个顶点组成,这些顶点定义了点、多段线或多边形要素。在点要素类的情况下,每个点要素由单个顶点组成。多段线和多边形要素由多个顶点组成。...每个顶点是由一对x、y坐标定义的位置。该图说明了点、多段线和多边形如何在笛卡尔坐标空间中由顶点定义。 使用几何体对象可以将要素写入要素类,我们可以从坐标值表创建要素。...使用游标时,可以在游标对象上的每次迭代中创建每个新特征,这样可以在处理许多特征时获得更好的性能。...示例:从excel表格制作分年龄的人口普查要素文件 代码文件在4.2.7-处理几何数据代码练习和示例2.ipynb 此示例演示了如何通过表格数据制作分年龄、性别的人口_省份等级.shp文件,把人口数据在空间上呈现...通常,这是做研究的基础工作,方便了解我们数据在空间上是如何分布的,比如横向对比每个省份之间的总人口差异有哪些,每个省份年龄构成差异有哪些,年龄结构和经济的关系,你可以纵向对比多次人口普查在空间上的差异,

    32310

    Part3-1.获取高质量的阿姆斯特丹建筑立面图像(附完整代码)

    此时Point S的方位角(以北为起点,顺时针旋转的角度)叫做 θ,就是网页中需要填入的角度。那如何找到此点,论文提出了一种方法找到此点。...找到最近的点Point C:对于建筑物的每个边的中心点,计算它到道路的每个段的最近距离。 计算点到线段的垂直距离,可以通过向量数学或使用一些专用的几何算法来完成。...=False) 2)使用Shapely获取建筑各边的中心点 要获取GeoPandas集合体(例如GeoSeries或GeoDataFrame)中每个多边形的外边界上所有中点,你可以使用Shapely库的几何对象方法和属性...3.1 使用geopandas找到街景点(方法1) 建议用方法一,因为速度更快。如果你想学如果使用ArcGIS Python也就是Arcpy如何处理空间数据,也推荐看看第二种方法。...通过使用pandas的apply方法更高效地遍历df中的每一行。通过使用列表推导式和min函数,可以更高效地找到日期最近的pano。

    69910

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

    在这篇文章中,我将向你展示如何创建使用点密度图geopandas和h3-py库在Python。 国家地理空间情报局的海事安全信息门户以反航运活动消息的形式提供所有海盗事件的形状文件。...这是原始点图层在 QGIS 中的可视化效果。 我们将通过在 H3 提供的六边形网格上聚合事件点来创建密度图。我们从导入库开始。...由于落在网格单元中的所有点都具有相同的 id,我们可以简单地聚合具有相同网格 id 的所有行,以找到落在网格多边形中的所有点。...因此,通过使用基于网格的索引系统 - 复杂的空间“多边形点”操作变成了对表的简单聚合。...我们groupby在h3列上使用 Panda 的函数,并count在输出中添加一个新列,其中包含每个 H3 id 的行数。

    35710

    geopandas 0.14版本重要更新内容一览

    0.14版本底层依赖变动 在0.14版本中,geopandas底层将默认使用shapely(>=2.0版本)进行高性能矢量运算,因此geopandas仅会在shapely缺失但pygeos已安装时,才会调用.../GeoDataFrame新引入了一系列矢量计算方法,具体有: 2.3.1 新增concave_hull()方法 有别于先前已有的convex_hull方法,新增的concave_hull()方法用于为矢量列中的每个要素计算...),是一种用来度量路径之间相似度的经典数学方法: 举个例子,我们构造如下的四条路径线要素,肉眼上很容易看出a与b,c与d各自相似度最高: 而通过frechet_distance()计算两两之间的弗雷歇距离...()方法 新增remove_repeated_points()方法,用于沿要素坐标串定义方向,将距离在阈值以内的坐标点视作重复点要素进行移除,默认阈值为0,你可以在实际应用中灵活调整阈值,从而起到简化要素的目的...---- · 推荐阅读 · 如何发布具有超高性能的地图服务 geopandas 0.13版本更新内容一览 n倍加速geopandas运算是什么体验

    34430

    用 GeoPandas 绘制超高颜值数据地图

    这是 Python 库 GeoPandas 的用武之地。 本文和大家一起学习如何使用 GeoPandas有效地可视化地理空间数据。...几何 代表 点 points 地块位置的中心点等。 线 lines 道路、溪流 多边形 polygons 建筑物、湖泊、州、省等的边界。...在下一节中,我们将一起学习如何使用一些常见的函数,如边界、质心和最重要的绘图方法。为了演示地理空间可视化的工作,让我们使用来自2021年奥运会数据集的Teams数据。...团队的数据集包含团队名称、项目、NOC(国家/地区)和事件列。在本练习中,我们将仅使用 NOC 和 项目 列。...对未参加的国家进行着色 绘制missing_kwds 现在,哪些没有参加的国家呢?所有没有阴影(即白色)的国家都是没有参加的国家。但是我们通过将这些国家/地区涂成灰色来使这一点更加明显。

    5.2K21

    geopandas,用python画地图原来这么简单!

    先看个示例,我们在python中显示世界地图 import pandas as pd import geopandas import matplotlib.pyplot as plt %matplotlib...plt.show() 当然除了上面的平面效果,你还可以做出这样的: 还可以给地图着色: ---- 下面言归正传,正式讲解geopandas是如何工作的 前面说过,geopandas沿用了pandas...的数据类型,所以geopandas中也有两种数据类型: GeoSeries GeoDataFrame 它们继承了pandas数据结构的大部分方法。...你可以把这两个数据结构当作地理空间数据的存储器,shapefile文件的pandas呈现。 Shapefile文件用于描述几何体对象:点,折线与多边形。...= geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres')) # 新增一列,每个国家的中心点 world['centroid_column

    3.1K20

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

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

    59900

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

    本文是基于geopandas的空间数据分析系列文章的第8篇,通过本文你将学习到geopandas中的空间计算(由于geopandas中的空间计算内容较多,故拆分成上下两篇发出,本文是上篇)。...2 基于geopandas的矢量计算 geopandas中的矢量计算根据性质的不同可分为以下几类: 2.1 构造型方法 geopandas中的构造型方法(Constructive Methods)指的是从单个...参数就用于决定每个四分之一圆弧上使用多少段连续的线段来近似拼接以表示圆的形状,默认参数值为16,足以近似模拟圆面积的99.8%   下面我们分别对点、线以及面绘制不同resolution参数取值下缓冲前后的对比图...图3   在本系列文章第一篇中介绍过shapely对矢量数据格式的合法性有一定规定,如多边形不能自交叉,可以通过is_valid()方法判断几何对象是否合法,而buffer()有一个隐藏功能就是其可以通过对非法的几何对象创建距离为...,这时对矢量数据进行简化就非常有必要,geopandas中沿用shapely中的simplify()方法,帮助我们对过于复杂的线和面进行简化,和QGIS中简化矢量的方法一样,simplify()使用了科学的

    4K31

    (数据科学学习手札162)Python GIS神器geopandas 1.0版本发布

    历经10年迭代升级,geopandas充分完善了其在GIS数据分析上的功能,使得我们可以使用类似pandas的操作方式,便捷且高性能的开展各种常用的GIS分析运算,极大增强了Python在GIS分析领域的能力...今天的文章,费老师我就将带大家一起快速了解在全新的1.0版本中,新的功能特性、优化提升以及相关API的变动情况~ 2 geopandas 1.0版本介绍   如果你还未曾安装使用过geopandas,我最推荐的方式是新建虚拟环境...,并在虚拟环境中通过conda-forge源进行稳定安装,以当下非常流行的开源环境管理工具mamba(可参考我所写的教程)为例,在终端执行下列命令(目前推荐Python版本为3.9),静静等待,即可一步到位完成最新版...  接下来我们来了解新版本中获得功能增强的一些主要API: 2.2.1 空间连接新增dwithin型空间关系判断   针对sjoin()方法,新增了dwithin型空间关系判断,使得我们可以在geopandas...中真正意义上直接实现“匹配与目标要素距离在XXX以内的纪录行”: 2.2.2 配合pd.read_csv指定矢量列类型   在新版本中,我们可以将GeoDataFrame写出为csv格式,并在使用pd.read_csv

    20210

    Python GIS神器geopandas 1.0版本来了

    历经10年迭代升级,geopandas充分完善了其在GIS数据分析上的功能,使得我们可以使用类似pandas的操作方式,便捷且高性能的开展各种常用的GIS分析运算,极大增强了Python在GIS分析领域的能力...今天的文章,费老师我就将带大家一起快速了解在全新的1.0版本中,新的功能特性、优化提升以及相关API的变动情况~ 2 geopandas 1.0版本介绍 如果你还未曾安装使用过geopandas,我最推荐的方式是新建虚拟环境...,并在虚拟环境中通过conda-forge源进行稳定安装,以当下非常流行的开源环境管理工具mamba(可参考我所写的教程 mamba使用教程 公众号:Python大数据分析 是时候跟Conda说再见了...()方法 新增方法contains_properly(),用于快捷判断矢量A是否严格包含矢量B,与contains()方法的区别是,contains_properly()不允许作比较的矢量间有任何公共点...geopandas中真正意义上直接实现“匹配与目标要素距离在XXX以内的纪录行”: 2.2.2 配合pd.read_csv指定矢量列类型 在新版本中,我们可以将GeoDataFrame写出为csv格式,

    17110

    左手用R右手Python系列12——空间数据可视化与数据地图

    以前我一直觉得Python的绘图工具与R语言ggplot2比起来,不够优雅,这也是我一直坚定的选择使用R+ggplot2深入的学习数据可视化的原因,ggplot2在坐标系的整合与兼容性和扩展性上确实技高一筹...巧合的是,python中的geopandas用了同样的 技术来简化空间数据可视化的复杂度,其核心理念也是通过压缩单个地理多边形为一个Simple Features,使得所有的地理多边形与其属性信息严格对齐...也许以上描述过于抽象,因为涉及到到的内容比较深入,我实在是不知道该如何把这些内容将的通俗易懂,接下来会使用图片辅助演示。...) #从SP(空间数据对象)中剥离地理多边形边界点信息和多边形属性信息 x<-china_map@data xs<-data.frame(id=row.names(x),x) china_map_data...geopandas包同时支持导入shp素材和json素材,导入之后得数据结构与R语言中得sf导入之后得结构是一致得,地理多边形边界点信息都被压缩成了一个非常整齐的列表存储,列表内每一个单独的子项目都代表着一个多边形

    2.1K40

    基于geopandas的空间数据分析——空间计算篇(上)

    2 基于geopandas的矢量计算 geopandas中的矢量计算根据性质的不同可分为以下几类: 2.1 构造型方法 geopandas中的构造型方法(Constructive Methods)指的是从单个...=缓冲区距离的圆,而Polygon类型始终是由有限个点所构成的,因此需要近似拼接出圆形的轮廓,resolution参数就用于决定每个四分之一圆弧上使用多少段连续的线段来近似拼接以表示圆的形状,默认参数值为...shapely对矢量数据格式的合法性有一定规定,如多边形不能自交叉,可以通过is_valid()方法判断几何对象是否合法。...这时对矢量数据进行简化就非常有必要,geopandas中沿用shapely中的simplify()方法,帮助我们对过于复杂的线和面进行简化,和QGIS中简化矢量的方法一样,simplify()使用了科学的...,这一点可以方便我们的很多日常操作: 图9 2.2 仿射变换 geopandas中封装了几种常见的仿射变换操作,如旋转等: rotate() rotate()对矢量列中的每个要素分别进行旋转操作,其主要参数如下

    3.3K30

    geopandas 0.11版本重要新特性一览

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

    72620

    抽样调查怎么做?

    如果样本中的所选调查对象不全,那么就会导致结果偏倚。 2、抽样单位不准确,比如我们上面提到过的检验一批商品的合格率中抽样对象有件和箱两种,我们在选择抽样单位的时候一定要根据实际情况进行合理的选择。...3、调查问卷的问题设计不当。设计的问题要中性,要适合每个人回答。比如,某公司为了调查A品牌在消费者心中的喜欢程度,在做问卷的过程中,设置了“在XX行业,比起A品牌,你更喜欢哪个品牌?”...05 如何避免不准确结果的出现 关于偏倚产生的原因,上面讲述了四点,虽然偏倚来源广泛,但是大部分可以归结为样本选取方法,我们接下来就该针样本选取方法进行改进。以下是集中样本选取方法。...1、简单随机抽样,简单随机抽样就是通过随机的选取一个大小为n的样本,所有大小为n的样本被选中的可能都相同。...3、整群抽样将总体划分为几个群,其中每个群都尽量与其他群相似,可通过简单随机抽样随机抽取几个群,这个时候抽样单位为群。

    1.6K70

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

    这样的非法要素读到geopandas或是PostGIS等常用GIS工具中,在进行一些矢量计算操作时会触发拓扑错误问题,而今天的文章中,我们就来学习一下在geopandas中如何有效地解决此类的要素拓扑非法问题...2 在geopandas解决拓扑错误问题 2.1 geopandas中常见的要素拓扑错误情况   在geopandas中,要素的合法性(validity)是针对面要素、多部件面要素而言的,同其底层依赖的...而配合shapely中的explain_validity()则可以具体诊断出各自具体的拓扑非法原因:   通过这些信息,我们就可以更有的放矢地决定对各个要素进行删除还是修复操作。...()的快捷拓扑修复方法make_valid(),对于小于0.12.0版本的geopandas,我们则可以配合map()快捷实现同样的效果:   下面我们来瞅瞅针对每种情况具体是如何进行修复的: 修复错误情况...1:坐标串自交叉   可以看到,通过make_valid()针对坐标串自交叉进行修复的方式是将其拆分为多个合法多边形构成的多部件要素:   如果你希望最后的结果为一个完整的多边形,这里给大家推荐一种奇淫巧技

    1.2K20

    (数据科学学习手札154)geopandas 0.14版本新特性一览

    0.14版本底层依赖变动   在0.14版本中,geopandas底层将默认使用shapely(>=2.0版本)进行高性能矢量运算,因此geopandas仅会在shapely缺失但pygeos已安装时...()方法用于为矢量列中的每个要素计算最小凹多边形,与convex_hull计算结果的对比示例如下: import random from shapely.geometry import MultiPoint...distance),是一种用来度量路径之间相似度的经典数学方法:   举个例子,我们构造如下的四条路径线要素,肉眼上很容易看出a与b,c与d各自相似度最高:   而通过frechet_distance...: 2.3.7 新增remove_repeated_points()方法   新增remove_repeated_points()方法,用于沿要素坐标串定义方向,将距离在阈值以内的坐标点视作重复点要素进行移除...,默认阈值为0,你可以在实际应用中灵活调整阈值,从而起到简化要素的目的: 2.3.8 新增segmentize()方法   新增segmentize()方法,用于对目标矢量列中的各要素,按照设定的等间距进行增密操作

    39520

    geopandas:Python绘制数据地图

    rsuffix:组合后右侧数据集中几何对象列的后缀,默认为right。 以下示例展示了如何使用sjoin函数进行空间连接。...boundary:返回一个GeoSeries,其中包含每个几何形状的集合理论边界的低维对象。 centroid:返回一个GeoSeries,其中包含每个几何质心的点。...convex_hull:返回一个GeoSeries,其中包含表示包含每个对象中所有点的最小凸多边形的几何形状,除非对象中的点数小于三个。对于两个点,凸包会折叠成一个线串;对于一个点,凸包是一个点。...envelope:返回一个GeoSeries,其中包含包含每个对象的点或最小矩形多边形(其边与坐标轴平行)的几何形状。...在geopandas中,simplify函数可以用来简化多边形的形状,以减少地图数据的大小,同时也可以提高绘图的效率。当绘图数据特别大时,该函数很有用。

    3.6K41
    领券