Python彩色网格在shapefile数据图上

时间:2016-09-19 19:22:31

标签: python python-2.7 matplotlib shapefile

我有一个带有坐标的形状文件(.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格式提供。在询问之前应该先研究一下。 但是,我仍然需要在地图上绘制所说的网格。

0 个答案:

没有答案