根据矩形角点生成矩形shapefile文件

该博客介绍了如何根据表格中的经纬度范围,利用Python的geopandas库生成矩形并将其导出为shapefile文件。主要步骤包括解析角点坐标、创建矩形Polygon、设置坐标参考系统以及保存为shapefile。
摘要由CSDN通过智能技术生成

题目:将下表中每一行的经纬度范围生成矩形,最后导出成shapefile文件
在这里插入图片描述
求解思路
1.根据字段的字符串的值分割 获取矩阵角点经纬度
2.使用Polygon函数根据角点坐标生成矩形
3.指定坐标系
4.导出shapefile文件

    import geopandas as gpd
    import pandas as pd
    import os
    
    file_name = 'TK.xls'
    df = pd.read_excel(file_name, encoding="utf-8")
    df[["ID","纬度", "经度"]].head()

def DMS2decimal(DMS):
        D_index = DMS.find("°")
        M_index = DMS.find("′")
        S_index = DMS.find("″")
        D
要使用Shapely对一个多边形生成外包矩形,并对矩形进行投影,并将矩形划分成100米*100米的多边形,你可以使用GeoPandas、Shapely和pyproj库。下面是一个示例代码,展示了如何实现这个过程: ```python import geopandas as gpd from shapely.geometry import Polygon from shapely.ops import transform from pyproj import Transformer # 定义原始多边形 polygon = Polygon([(0, 0), (0, 10), (10, 10), (10, 0)]) # 计算多边形的外包矩形 bounding_box = polygon.bounds # 定义原始坐标系(EPSG:4326)和目标坐标系(EPSG:3857) src_crs = "EPSG:4326" dst_crs = "EPSG:3857" # 创建一个转换器,用于进行投影转换 transformer = Transformer.from_crs(src_crs, dst_crs) # 对外包矩形进行投影转换 projected_bounding_box = transform(transformer.transform, bounding_box) # 计算投影后的矩形的边界值 x_min, y_min, x_max, y_max = projected_bounding_box # 计算每个小格子的大小(100米*100米) grid_size = 100 # 创建一个空的GeoDataFrame来存储划分后的多边形 grid = gpd.GeoDataFrame() # 划分矩形成小格子 for x in range(int(x_min), int(x_max), grid_size): for y in range(int(y_min), int(y_max), grid_size): poly = Polygon([(x, y), (x+grid_size, y), (x+grid_size, y+grid_size), (x, y+grid_size)]) # 如果小格子与原始多边形相交,则将其添加到GeoDataFrame中 if poly.intersects(polygon): grid = grid.append({'geometry': poly}, ignore_index=True) # 设置GeoDataFrame的坐标系为目标坐标系 grid.crs = dst_crs # 保存划分后的多边形为Shapefile文件 grid.to_file("grid.shp") ``` 这段代码会对给定的多边形生成外包矩形,并将矩形投影到目标坐标系中。然后,它会将矩形划分成100米*100米的小格子,并将与原始多边形相交的小格子保存为一个Shapefile文件。请确保你已经安装了pyproj、geopandas和shapely库。你可以根据需要调整多边形的顶点坐标、目标坐标系和小格子的大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值