【发布时间】:2021-10-31 18:51:04
【问题描述】:
当通过buffer(此处为正方形)生成多边形时,用于生成的几何点的坐标与在生成后多边形上的.centroid 方法获取的坐标不同。
这是一个只有一点的例子。
from shapely.ops import transform
import geopandas as gpd
import shapely.wkt
import pyproj
from math import sqrt
def edge_size(area): return sqrt(area)*1e3
point = "POINT (4379065.583907348 2872272.254645019)"
point = shapely.wkt.loads(point)
center = gpd.GeoSeries(point)
project = pyproj.Transformer.from_proj(
pyproj.Proj('epsg:3395'),
pyproj.Proj('epsg:4326'),
always_xy=True)
center = center.apply(lambda p: transform(project.transform, p))
print(center.iloc[0])
square = point.buffer(
edge_size(3), cap_style=3) #distance of 3km2
square = gpd.GeoSeries(square)
square = square.apply(lambda p: transform(project.transform, p))
square = square.apply(lambda p: p.centroid)
print(square.iloc[0])
#POINT (39.33781544185747 25.11929860805248)
#POINT (39.33781544185747 25.11929777802279)
这会导致之后的处理错误。
首先,这正常吗?以及如何解决这个问题?
我还报告了我的问题here。感谢您的关注。
【问题讨论】:
标签: geopandas shapely pyproj fiona