2.2.1 GeoDataFrame基础 顾名思义,geopandas中的GeoDataFrame是在pandas.DataFrame的基础上,加入空间分析相关内容进行改造而成。...这时几何对象列的名称可以自由设置,但一定要利用GeoDataFrame.set_geometry()方法将后添加的矢量列指定为矢量主列。...实际上GeoDataFrame允许表中存在多个矢量列,只要求任意时刻有且仅有1列为矢量主列即可。...数据索引 作为pandas.DataFrame的延伸,GeoDataFrame同样支持pandas.DataFrame中的.loc以及.iloc对数据在行、列尺度上进行索引和筛选。...为GeoDataFrame添加了.cx索引方式,可以传入所需的空间范围,用于索引与传入范围相交的对应数据: # 选择与东经80度-110度,北纬0度-30度范围相交的几何对象 part_world =
GeoDataFrame 它们继承了pandas数据结构的大部分方法。...GeoDataFrame是包含GeoSeries的数据结构,它是多列的,但其中一列必然是GeoSeries列,这个GeoSeries列被称作GeoDataFrame中的几何列。...GeoDataFrame的其他列,可以是几何图形的名字、属性等信息,比如国家的人口、面积、GDP等等。...你也可以用read_file方法读取自己的shapefile文件 所以说,world变量被赋予了一个GeoDataFrame数据列,它长这样: 这个数据列中,不仅有几何列geometry,还有其它属性列...代码如下: import pandas as pd import geopandas import matplotlib.pyplot as plt %matplotlib inline world
2 数据结构 geopandas作为pandas向地理分析计算方面的延拓,基础的数据结构延续了Series和DataFrame的特点,创造出GeoSeries与GeoDataFrame两种基础数据结构...图27 2.2 GeoDataFrame 2.2.1 GeoDataFrame基础 顾名思义,geopandas中的GeoDataFrame是在pandas.DataFrame的基础上,加入空间分析相关内容进行改造而成...,这时几何对象列的名称可以自由设置,但一定要利用GeoDataFrame.set_geometry()方法将后添加的矢量列指定为矢量主列,因为每个GeoDataFrame若在定义之处没有指定矢量列,后将无法进行与适量信息挂钩的所有操作...图31 2.2.2 GeoDataFrame数据索引 作为pandas.DataFrame的延伸,GeoDataFrame同样支持pandas.DataFrame中的.loc以及.iloc对数据在行...图35 而除了这些常规的数据索引方式之外,geopandas为GeoDataFrame添加了.cx索引方式,可以传入所需的空间范围,用于索引与传入范围相交的对应数据: # 选择与东经80度-110
这是该网站上内嵌的web机场地图,正在本期教程中,我们将让ChatGPT来制作这样一份地图 数据比较杂乱,注意记住这三列就可以 代码编写 交互式地图绘制 作为一个对话型AI,当然需要告诉他我使用什么数据...,什么平台,什么编程语言完成地图,让我们见识一下ChatGPT的能力吧 修改一下文件路径,然后运行程序 import pandas as pd import geopandas as gpd from...筛选需要的数据 在数据中type列是机场属性,接下来就让ChatGPT教我如何显示筛选出的大型机场吧 这是ChatGPT修改后的代码 import pandas as pd import geopandas...osm作为背景 修改web地图图层 让ChatGPT切换成卫星影像 ChatGPT具有上下文多轮会话能力,这太神奇了 生成的代码如下 import pandas as pd import geopandas...在遥感和GIS领域,我看到他巨大的潜力,特别是作为编写代码修改BUG的工具方面,他会给我们提供非常有用的指导,在未来 的地理空间分析学习工程中,我将尝试把ChatGPT带给你们,展现出在AI帮助下我们的工作将会变得更加轻松
❝本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 最近一段时间(本文写作于2020-...安装完成后,我们就来一睹这些新功能的效率如何,首先我们创建一个足够大的虚拟表(200万行11列),并为其新增点要素矢量列: import numpy as np from shapely.geometry...import Point import pandas as pd from tqdm.notebook import tqdm # 创建虚拟表,其中字段名为了导出shapefile不报错加上非数字的前缀...base = gpd.GeoDataFrame(base, crs='EPSG:4326') # 转换为GeoDataFrame 最终得到一个较为庞大的GeoDataFrame,接着我们分别测试geopandas...中所有内置的底图参数,从中选择你心仪的底图: 图7 以上就是本文的全部内容,欢迎在评论区与我们进行讨论~ -END-
本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 最近一段时间(本文写作于2020-07...安装完成后,我们就来一睹这些新功能的效率如何,首先我们创建一个足够大的虚拟表(200万行11列),并为其新增点要素矢量列: import numpy as np from shapely.geometry...import Point import pandas as pd from tqdm.notebook import tqdm # 创建虚拟表,其中字段名为了导出shapefile不报错加上非数字的前缀...base = gpd.GeoDataFrame(base, crs='EPSG:4326') # 转换为GeoDataFrame 最终得到一个较为庞大的GeoDataFrame,接着我们分别测试geopandas...图6 你也可以利用下面的方式查看contextily中所有内置的底图参数,从中选择你心仪的底图: ? 图7
本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在基于geopandas的空间数据分析系列文章第...图2 在geopandas中我们利用sjoin函数来实现空间连接,其使用方式类似pandas中的merge接近,主要参数如下: left_df:GeoDataFrame,传入空间连接对应的左表 right_df...:GeoDataFrame,传入空间连接对应的右表 how:字符型,用于决定连接方式,'inner'表示内连接,且连接结果表中的矢量列来自左表;'left'表示左连接,且结果表中的矢量列来自左表;'right...,其他类型几何对象之间的空间连接你也可以根据自己的需要进行操作,值得一提的是,利用sjoin()进行空间左、右、内连接时,因为结果表依旧是GeoDataFrame,所以只会保留一列矢量列,按照上文中参数介绍部分的描述...geopandas是一个非常优秀的工具,它给了我们进行空间计算的多一种选择,我目前所有工作中涉及到的可以用geopandas解决的问题,都会在jupyter中建立顺滑的工作流。
图1 2 geopandas 0.9.0重要新特性一览 出于对稳定性的考虑,我选择新建虚拟环境来探索新版本geopandas,完整命令如下(顺便一提,0.9.0版本最低支持的Python版本为3.5...图3 2.3 新增高度z属性 在以前版本中,我们可以对点要素构成的GeoSeries或GeoDataFrame提取x与y坐标属性,而在这次的更新中,额外新增了对高度z属性的支持: ?...图4 2.4 dissolve()方法新增无字段依赖模式 我在geopandas系列教程空间计算篇(上)带大家学习过用于对不同记录行矢量要素,按照某列或多列进行矢量融合的方法dissolve(),而新版本中的...GeoDataFrame或GeoSeries自动拆分为每行包含单要素的结果,但熟悉pandas的小伙伴一定知道在pandas中有同名方法,用于将元素为数组类型如列表的单行记录拆成单元素构成的多行记录。...而以前版本geopandas中的explode()方法是不兼容pandas的,这意味着如果你既需要多部件矢量要素拆分,又需要按照数组型元素拆分,就得在geopandas与pandas的数据结构之间转来转去
,我选择新建虚拟环境来探索新版本geopandas,完整命令如下(顺便一提,0.9.0版本最低支持的Python版本为3.5): conda create -n geopandas-env python...我在geopandas系列教程空间计算篇(上)带大家学习过用于对不同记录行矢量要素,按照某列或多列进行矢量融合的方法dissolve(),而新版本中的dissolve()中的by参数默认值为None,...explode()方法与pandas的冲突 我在geopandas系列教程空间计算篇(上)中还介绍过与dissolve()方法相反的explode()方法,它可以将多要素集合类型的GeoDataFrame...或GeoSeries自动拆分为每行包含单要素的结果,但熟悉pandas的小伙伴一定知道在pandas中存在着同名方法,用于将元素为数组类型如列表的单行记录拆成单元素构成的多行记录。...而以前版本geopandas中的explode()方法是不兼容pandas的,这意味着如果你既需要多部件矢量要素拆分,又需要按照数组型元素拆分,就得在geopandas与pandas的数据结构之间转来转去
本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在基于geopandas的空间数据分析系列文章第...图2 在geopandas中我们利用sjoin函数来实现空间连接,其使用方式类似pandas中的merge接近,主要参数如下: left_df:GeoDataFrame,传入空间连接对应的左表...right_df:GeoDataFrame,传入空间连接对应的右表 how:字符型,用于决定连接方式,'inner'表示内连接,且连接结果表中的矢量列来自左表;'left'表示左连接,且结果表中的矢量列来自左表...图8 类似的,其他类型几何对象之间的空间连接你也可以根据自己的需要进行操作,值得一提的是,利用sjoin()进行空间左、右、内连接时,因为结果表依旧是GeoDataFrame,所以只会保留一列矢量列...geopandas是一个非常优秀的工具,它给了我们进行空间计算的多一种选择,我目前所有工作中涉及到的可以用geopandas解决的问题,都会在jupyter中建立顺滑的工作流。
GeoPandas 基于Pandas。它扩展了 Pandas 数据类型以包含几何列并执行空间操作。因此,任何熟悉Pandas的人都可以轻松采用 GeoPandas。...虽然GeoDataFrame可以有多个GeoSeries列,但其中只有一个是活动几何图形,即所有几何操作都在该列上。 在下一节中,我们将一起学习如何使用一些常见的函数,如边界、质心和最重要的绘图方法。...团队的数据集包含团队名称、项目、NOC(国家/地区)和事件列。在本练习中,我们将仅使用 NOC 和 项目 列。...▲ df_world df_world 的类型是 GeoDataFrame 与大陆(国家)的名称和几何列(国家地区)。...将以下行添加到我们之前编写的绘图代码中,用深蓝色填充圆圈标记这些国家。
以前我一直觉得Python的绘图工具与R语言ggplot2比起来,不够优雅,这也是我一直坚定的选择使用R+ggplot2深入的学习数据可视化的原因,ggplot2在坐标系的整合与兼容性和扩展性上确实技高一筹...的确,它跟pandas有着千丝万缕的联系,并且继承了pandas的诸多高频函数。而geo是什么鬼呢?...匹配,在前期的数据处理上花费的时间和代码量已经远远超过了可视化的代码量。...实际上导入之后,你可以看到它的结构是一种特殊的带有地理信息列的数据框。...geopandas.geodataframe.GeoDataFrame 这种格式数据框继承了大多数pandas普通数据框的函数及属性,可以直接针对其使用plot函数绘图。
❝本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 就在前不久,我们非常熟悉的Python...但有些时候我们需要判断的并不是左右两表中矢量列相交、包含等直接的「拓扑关系」,而是左右两表矢量列之间「距离至多xx米」这类的空间距离关系判断,这在旧版本的geopandas中,通常可以左右两边分别做「缓冲区...而这次新增的sjoin_nearest()就可以支持我们开展上述分析计算功能,它的主要参数有: 「left_df」:连接对应的左GeoDataFrame 「right_df」:连接对应的右GeoDataFrame...folium,而在这次新版本中,geopandas为GeoDataFrame及GeoSeries对象新增交互式地图可视化方法explore(),你可以理解为交互式版本的plot()方法。...的方法来使用 在以前的版本中,我们只能使用gpd.XXX()的方式来使用sjoin()、overlay()、clip()等方法,而在这次新版本更新中,我们可以像pandas里的merge()、join(
相较而言,seaborn基于matplotlib,提供了更为丰富的样式,具有更加简洁的API接口,一两句代码就能完成非常强大的图表绘制。...geopandas,geopandas是一个继承自pandas的地理信息数据处理库,其核心数据接口geodataframe本质上就是在pandas的dataframe数据结构上增加一列geometry,...除了继承了pandas的各种数据处理接口外,geopandas还增强了画图功能,在一个具有geometry列信息的geodataframe中,直接调用.plot()接口,即可快速查看当前地理信息情况。...下图是混用matplotlib和geopandas.plot()的直接绘图结果,仅需额外设置用于标识数值大小的一列,即可绘制五颜六色的炫丽图片。...然而,虽然可视化图表选择众多,但其实也不能过于追求标新立异,例如桑基图、瀑布图、南丁格尔图等,特定场景下用用可能效果感人,但绝大多数情况下,Simple is better than complex,折线图
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 就在前不久,我们非常熟悉的Python...但有些时候我们需要判断的并不是左右两表中矢量列相交、包含等直接的拓扑关系,而是左右两表矢量列之间距离至少xx米这类的空间距离关系判断,这在旧版本的geopandas中,通常可以左右两边分别做缓冲区后进行常规空间连接来实现...而这次新增的sjoin_nearest()就可以支持我们开展上述分析计算功能,它的主要参数有: left_df:连接对应的左GeoDataFrame right_df:连接对应的右GeoDataFrame...folium,而在这次新版本中,geopandas为GeoDataFrame及GeoSeries对象新增交互式地图可视化方法explore(),你可以理解为交互式版本的plot()方法。 ...的方法来使用 在以前的版本中,我们只能使用gpd.XXX()的方式来使用sjoin()、overlay()、clip()等方法,而在这次新版本更新中,我们可以像pandas里的merge()、join
基于经纬度数据 GeoDataFrame有一个geometry列,我们可以通过经纬度数据Latitude和Longitude创建该列。...如果右侧GeoDataFrame中没有与左侧相交的几何体,则右侧数据中的所有列都将为null。...如果左侧GeoDataFrame中没有与右侧相交的几何体,则左侧数据中的所有列都将为null。...在汇总过程中,可以选择保留某些字段的信息,也可以对其他字段进行统计计算。...等等 ⚠⚠source参数选择不同底图的来源,可能需要大量时间或者特定网络,如果失败多重试运行代码。
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在本系列之前的文章中我们主要讨论了geopandas...图12 2.3 叠加分析 geopandas基于shapely中的overlay(),为GeoDataFrame赋予了同样的可以作用到整个矢量列的overlay(),使得我们可以对两个GeoDataFrame...图27 在实际工作中,可以根据具体需要来选择使用对应的参数组合来进行叠加分析。...2.4 空间融合与拆分 有时候我们希望对矢量数据按照某些字段进行分组,再分别对非矢量列与矢量列进行聚合及合并,类似于pandas中的groupby.agg();而有些时候我们希望把矢量类型为Multi-xxx...aggfunc:对分组字段外的其他非矢量列采取的聚合方式,与pandas中的agg一致,默认为first,也可以像agg那样传入字段和函数一一对应的字典来分别聚合不同的列 as_index:bool
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 后台回复空间计算也可获取本文全部代码 1 简介 在本系列之前的文章中我们主要讨论了...赋予了同样的可以作用到整个矢量列的overlay(),使得我们可以对两个GeoDataFrame中全部的矢量对象两两之间进行基于集合关系的叠加分析(如图13): 图13 overlay()中的主要参数如下...26所示: 图26 其中GeometryCollection类型代表多类型要素集合,比如这里叠加分析的结果包含了一条线和一个点: 图27 在实际工作中,可以根据具体需要来选择使用对应的参数组合来进行叠加分析...2.4 空间融合与拆分 有时候我们希望对矢量数据按照某些字段进行分组,再分别对非矢量列与矢量列进行聚合及合并,类似于pandas中的groupby.agg(); 而有些时候我们希望把矢量类型为Multi-xxx...aggfunc:对分组字段外的其他非矢量列采取的聚合方式,与pandas中的agg一致,默认为first,也可以像agg那样传入字段和函数一一对应的字典来分别聚合不同的列 as_index:bool型
这张表整体就是我们之前在分享 R语言的sf对象和Python中的GeoDataFrame对象的技术雏形。...可以看到地理信息列在postgis中已经被编码成一组特殊数字,而在R中的sf对象中则是嵌套列表,在Python的GeoDataFrame中则是特殊的geomtry列。...3、postgis与Python交互: python中的数据库交互操作路径比较多,这里仅使用geopandas提供的写入接口以及sqlalchemy写出接口,探索出可行的读写代码即可。...最后利用pandas封装的sqlalchemy写出函数,将刚才规范过之后的表china_map写入postgis库中。...中的GeoDataFrame做出更多具备商业价值的东西,感兴趣的也可以一起分享交流心得。
《使用geopandas寻找街景点》的完整代码文件获取方式: 关注本公众号renhailab,选择点赞、在看或者转发本文之后,私信20231027获取代码。码字不易、多多点赞。...《使用Arcpy寻找街景点》的完整代码文件获取方式: 关注本公众号renhailab,选择点赞、在看或者转发本文之后,发送20231027获取代码。码字不易、多多点赞。...8i8192 我们打开此链接: 街景图示意 3)整合并简化代码 我们将上述代码合成一个整体,并简化代码。通过使用pandas的apply方法更高效地遍历df中的每一行。...《构建街景url》的完整代码文件获取方式: 关注本公众号renhailab,选择点赞、在看或者转发本文之后,发送20231027获取代码。码字不易、多多点赞。.../numpy/numpy-tutorial.html [8] pandas的基本知识: https://www.runoob.com/pandas/pandas-tutorial.html [9]
领取专属 10元无门槛券
手把手带您无忧上云