我有一个带有坐标的形状文件(.shp extention)
的数据集。他们应该看起来像这样:
-70.62 -33.43
-70.59 -33.29
等等。我已经开发出一种用pyplot
绘制这些数据的方法,其中每个绿点代表一棵树,每一行代表一条街道,如下所示:
pyplot streets & trees
但是,我需要在它上面绘制一个网格,并根据每个部分的树木数量为它的颜色着色。这样,具有更多树木的块将用更强的绿色着色,而具有更少树木的块将是浅绿色/黄色/红色。当然,这些颜色应该是部分透明的,因此地图不会完全覆盖。
这是我的代码:
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import cartopy.io.shapereader as shpreader
import shapely.geometry as sg
wgs84 = ccrs.Geodetic()
utm19s = ccrs.UTM(19, southern_hemisphere=True)
p_a = [-70.637, -33.449]
p_b = [-70.58, -33.415]
LL = utm19s.transform_point(p_a[0], p_a[1], wgs84)
UR = utm19s.transform_point(p_b[0], p_b[1], wgs84)
ax = plt.axes(projection=utm19s)
ax.set_extent([LL[0], UR[0], LL[1], UR[1]], crs=utm19s)
rds = shpreader.Reader('roadsUTM.shp')
trees = shpreader.Reader('treesUTM.shp')
rect = sg.box(LL[0], UR[0], LL[1], UR[1])
rds_sel = [r for r in rds.geometries() if r.intersects(rect)]
trees_sel = [t for t in trees.geometries() if t.intersects(rect)]
ax.add_geometries(rds_sel, utm19s, linestyle='solid', facecolor='none')
ax.scatter([t.x for t in trees_sel], [t.y for t in trees_sel], color = "green", edgecolor = "black", transform=utm19s)
plt.show()
TL; DR:使用shapefile编写的位置数据作为普通数字的方法可以解决我的部分问题。感谢。
编辑:所以我发现数据已经以UTM19S格式提供。在询问之前应该先研究一下。 但是,我仍然需要在地图上绘制所说的网格。