代码示例Geospatial computation变换

注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

变换

Python

合并shapefiles并转换为GeoJSON

如何合并多个shapefiles并将它们转换为GeoJSON格式?

此代码使用geospatial_tools库读取多个shapefiles,将它们的几何图形转换为GeoJSON格式,并将其合并为一个单一的PySpark DataFrame。它还计算每个几何图形的中心点并将其转换为geohash。

  • 提交日期: 2024-05-23
  • 标签: geospatial, shapefile, geojson, geohash, pyspark, geopandas

在PySpark中使用缓冲区进行地理空间合并

我如何在PySpark中执行带缓冲区的地理空间合并?

此代码使用geospatial_tools库在两个数据集(线和点)之间执行地理空间合并,点周围有30,000米的缓冲区。然后返回一个包含point_idline_id的DataFrame。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 from pyspark.sql import functions as F from transforms.api import configure, transform_df, Input, Output from geospatial_tools import geospatial from geospatial_tools.functions import buffer, lat_long_to_geometry @configure(profile=['GEOSPARK']) # 配置使用GEOSPARK配置文件 @geospatial() # 使用地理空间工具的装饰器 @transform_df( Output(), # 输出数据框 lines=Input(), # 输入数据框:线 points=Input() # 输入数据框:点 ) def compute(lines, points): # 选择并重命名lines数据框中的列 lines = lines.select(F.col('id').alias('line_id'), 'geometry') # 将纬度和经度转换为地理空间几何,并生成缓冲区 points = points.withColumn( 'geometry', lat_long_to_geometry('latitude', 'longitude', 'EPSG:4326') # 转换为几何类型 ).withColumn('geometry_buff', buffer('geometry', meters=30000) # 创建缓冲区,半径为30,000米 ).select('point_id', 'geometry_buff') # 执行空间连接,匹配缓冲区与线的几何 df = points.spatial_join( lines, ('geometry_buff', 'geometry'), # 匹配条件 'left' # 左连接 ).select(points.point_id, lines.line_id) # 选择连接后的列 return df # 返回结果数据框
  • 提交日期: 2024-04-25
  • 标签: geospatial, pyspark, geospatial_tools, buffer, spatial_join