如何解决确定地理位置是否在Python中的给定多边形内,而不使用数据文件?
我目前正以以下方式使用rasterio来确定my_point
所定义的多边形中是否包含geometries
(显然,在此示例中给出了特定的数字(EPSG:27700坐标)):
geometries = [{'type': 'Polygon','coordinates': [[[290000,92000],[291000,93000],[290000,93000]]]}]
my_point = (290500,92500)
with rasterio.open("myfile.tif") as src:
out_image,out_transform = mask(src,geometries,crop=True,all_touched=False,filled=False)
out_meta = src.meta.copy()
out_meta.update({"driver": "GTiff","height": out_image.shape[1],"width": out_image.shape[2],"transform": out_transform})
with MemoryFile() as memfile:
with memfile.open(**out_meta) as dataset:
dataset.write(out_image)
memfile.seek(0)
buffer = memfile.read()
with rasterio.open(BytesIO(buffer)) as subset:
row,col = subset.index(my_point[0],my_point[1])
if not out_image.mask[0,row,col]:
print("inside polygon")
else:
print("outside polygon")
但是,由于我只在乎该点是在内部还是外部,而不是源数据中的实际像素值,因此似乎不必使用数据文件来实现此目的。换句话说,我关心的是out_image.mask
,而不是out_image
数据。是否有更好的方法可以在Python中实现此目标,而不必使用源数据文件,并且最好使用相同或更少的代码行?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。