参考:Finding if latitude and longitude in shapefile region
问题:比如我现在有一些点的数据(具有经纬度坐标),然后有shapefile数据,现在我想知道哪些点是在shapefile中的,那些点不是。
以深圳为例,如下图有所示矩形的点,这些点有些在深圳范围内,有一些则不在其中,现在想要去除不在其中的点怎么办呢?
以下是相应的实现代码:
import shapefile # 这个
import shapely.geometry as geometry
import pandas as pd
from mpl_toolkits.basemap import Basemap
import matplotlib
import numpy as np
import pylab as plt
if __name__ == '__main__':
# 取得深圳的shape
sz_shp = shapefile.Reader(
r'G:\Shenzhen-wind\深圳地形文件\shapefile\gadm36_CHN_shp\gadm36_CHN_2')
for city_rcd in sz_shp.shapeRecords(): # 遍历每一条shaperecord
if city_rcd.record[6] == 'Shenzhen': # 遍历时,record字段是地区的信息(由字符串表示)
sz_shp = city_rcd.shape # 遍历时,shape字段是shape——形状(由点组成)
m = Basemap(llcrnrlon=113.7, llcrnrlat=22.35, urcrnrlon=114.7, urcrnrlat=22.9,
rsphere=(6378137.00, 6356752.3142