在Python中确定地理点是否位于给定多边形内,而不使用数据文件?
我目前以以下方式使用rasterio,以确定在Python中确定地理点是否位于给定多边形内,而不使用数据文件?,python,geospatial,rasterio,Python,Geospatial,Rasterio,我目前以以下方式使用rasterio,以确定my_point是否包含由Geometrics定义的多边形(显然是,本例中给出了特定的数字(EPSG:27700坐标)): 然而,由于我只关心点是在内部还是外部,而不关心源数据中的实际像素值,因此我必须使用数据文件来实现这一点似乎是不对的。换句话说,我关心的是out\u image.mask,而不是out\u image数据。在Python中有没有更好的方法来实现这一目标,而不必使用源数据文件,最好使用相同或更少的代码行 geometries = [{
my_point
是否包含由Geometrics
定义的多边形(显然是,本例中给出了特定的数字(EPSG:27700坐标)):
然而,由于我只关心点是在内部还是外部,而不关心源数据中的实际像素值,因此我必须使用数据文件来实现这一点似乎是不对的。换句话说,我关心的是out\u image.mask
,而不是out\u image
数据。在Python中有没有更好的方法来实现这一目标,而不必使用源数据文件,最好使用相同或更少的代码行
geometries = [{'type': 'Polygon', 'coordinates': [[[290000, 92000], [291000, 92000], [291000, 93000], [290000, 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")