当前位置: 首页 > article >正文

GeoPandas 笔记:合并数据

很多地方和 pandas 笔记:合并操作_pandas 表格判断行空则合并行居中_UQI-LIUWJ的博客-CSDN博客是类似的

1  导入数据

import geopandas
import pandas as pd
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world

cities = geopandas.read_file(geopandas.datasets.get_path('naturalearth_cities'))
cities

 1 concat (使用的是Pandas的concat)

pd.concat([world,cities])

2 属性的merge

  • 通过使用merge()方法实现。
  • 如果一个DataFrame在左参数中,而GeoDataFrame在右参数中,结果将不再是一个GeoDataFrame。

2.0 涉及的数据 

country_shapes = world[['geometry', 'iso_a3']]
country_shapes

country_names = world[['name', 'iso_a3']]
country_names

 

 2.1 返回的数据类型比较

country_shape是GeoDataFrame;country_name是DataFrame

type(country_shapes.merge(country_names, on='iso_a3'))
#geopandas.geodataframe.GeoDataFrame

type(country_names.merge(country_shapes, on='iso_a3'))
#pandas.core.frame.DataFrame

2.2 merge操作

country_shapes.merge(country_names, on='iso_a3')

 

country_names.merge(country_shapes, on='iso_a3')

 3 空间的join

3.1 sjoin

GeoDataFrame.sjoin()有四个参数:how和predicate

3.1.1 how

见pandas 笔记:合并操作_pandas 表格判断行空则合并行居中_UQI-LIUWJ的博客-CSDN博客的3.3小节

唯一的不同是,没有outer

3.1.2 predicate

  • 指定geopandas如何根据几何关系来决定是否将一个对象的属性与另一个对象连接。
    • intersects 交叉

      • 如果对象的边界或内部以任何方式与另一个对象的边界或内部相交,则返回True。

      • 换句话说,如果几何对象具有任何公共的边界或内部点,则它们相交。

    • contains 包含

      • 如果另一个对象的任何点都不位于对象的外部,且另一个对象的至少一个内部点位于对象的内部,则返回True。

      • ithin()的反函数。表达式a.contains(b) == b.within(a)始终计算为True。

    • within 在。。。中

      • 如果对象的边界和内部仅与另一个对象的内部(而不是其边界或外部)相交,则返回True

    • touches 相切?

      • 如果对象具有至少一个共同点且它们的内部不与另一个对象的任何部分相交,则返回True。

    • crosses  (三维的交叉)

      • 如果对象的内部与另一个对象的内部相交但不包含它,并且交集的维数小于其中一个或另一个的维数,则返回True。

    • overlaps (三维的重叠)

      • 如果几何体共有多个但不是全部的公共点,维数相同,并且几何体内部的交集的维数与几何体本身的维数相同,则返回True

3.1.3 lsuffix

  • 如果merge之后,某一个column的名字冲突了,那么在左边GeoDataFrame原先Column名字的右边加上_lsuffix
  • 默认为left

3.1.4 rsuffix

  • 如果merge之后,某一个column的名字冲突了,那么在右边GeoDataFrame原先Column名字的右边加上_lsuffix
  • 默认为right

 3.2  sjoin_nearest

GeoDataFrame.sjoin_nearest(right, 
        how='inner', 
        max_distance=None, 
        lsuffix='left', 
        rsuffix='right', 
        distance_col=None)

基于几何体之间的距离将两个GeoDataFrame进行空间连接。

结果将包括单个输入记录的多个输出记录,其中存在多个等距离最近或相交邻居。

3.2.1 两个额外的参数

  • max_distance
    • 指定匹配几何图形的最大搜索半径。
    • 这在某些情况下可能会对性能产生相当大的影响
  • distance_col
    • 如果设置了distance_col,结果GeoDataFrame将包含一个名为distance_col的列,其中包含输入几何图形与最近几何图形之间计算的距离。


http://www.kler.cn/a/13628.html

相关文章:

  • 使用@Scope注解设置组件的作用域
  • 专业四js知识点
  • 如何快速将PDF文件转换为Word文档
  • 15天学习MySQL计划(常用函数/约束)(基础篇)第三天
  • shell:清理指定目录中指定天数之前的旧文件
  • 【学习笔记】从MySQL快速入门 PostgreSQL
  • 美国肝素钠专用树脂,医药肝素钠提取工艺专用树脂
  • 三谈ChatGPT(ChatGPT可以解决问题的90%)
  • OpenCV 图像处理学习手册:6~7
  • 液压轴位置闭环控制(比例伺服阀应用)
  • 不知道玩什么游戏的你看过来
  • 功率MOS管烧毁,有这些原因
  • 大型体检管理系统源码:适用于大中型医院或独立体检中心
  • C/C++每日一练(20230419)
  • Elasticsearch
  • 格式工厂将视频导出Maya需要的图像序列帧
  • 我的第一台电脑------计算机类专业学生购置电脑的一些个人心得
  • 如何用AI生成《ios客户端学习笔记(一):Swift学习路径》
  • VUE入门
  • VMware vSphere 8.0 Update 1 正式版发布 - 企业级工作负载平台