是否有类似matplotlib底图的库可以在街道级别显示地图?

时间:2016-04-10 19:37:50

标签: python python-2.7 data-visualization plotly matplotlib-basemap

在这种情况下,我希望绘制一个城市,华盛顿特区顶部的二维密度图.2d密度估计图是使用图表创建的,点是由它们的纬度和经度绘制的。我查看了底图,但似乎你只能绘制状态边界,并且无法在地图上获得城市边界和街道。我似乎没有办法用谷歌地图api做到这一点。问题:无法在底图中显示街道。

2 个答案:

答案 0 :(得分:2)

Arcgis有很多在线可用的地图,可以通过arcgis REST API直接从matplotlib底图访问。

matplotlib manual中没有提到它,但我在another site上发现了它。

就我个人而言,我大多与;WITH myTable (id, MyColumn) AS (SELECT 1, '0040~0040~0040~0040^00~00~00~01~05^100~001~010~011~015^00~00~00~01~05' union ALL SELECT 2, 'b040~0040~0040~0040^b0~00~00~01~05^b00~001~010~011~015^b02~00~00~01~05' union ALL SELECT 3, 'c040~0040~0040~0040^c0~00~00~01~05^c00~001~010~011~015^c02~00~00~01~05' union ALL SELECT 4, 'd040~0040~0040~0040^d0~00~00~01~05^d00~001~010~011~015^d02~00~00~01~05' ), RecursiveCTE (id, sub, startInd, endInd) AS ( SELECT id, convert(varchar, SUBSTRING(MyColumn, 1, CHARINDEX('^', MyColumn ))) as sub , 0 AS startInd , CHARINDEX('^', MyColumn ) AS endInd from mytable UNION ALL select id, convert(varchar, SUBSTRING((SELECT MyColumn FROM myTable WHERE id = dr.id), endInd + 1, endInd - startInd)), endInd, CHARINDEX('^', (SELECT MyColumn FROM myTable WHERE id = dr.id), endInd + 1) as endInd from RecursiveCTE dr where dr.endInd <> 0 ), PerIDSeperatedByDash AS ( select id, STUFF(( select '-' + SUBSTRING(drinner.sub, 1, CHARINDEX('~', drinner.sub) - 1) from RecursiveCTE drinner WHERE (drinner.id = drouter.id) FOR XML PATH ('')),1,1,'') AS DashSeperated from RecursiveCTE drouter group by id) SELECT DISTINCT STUFF(( SELECT ',' + ds.DashSeperated FROM PerIDSeperatedByDash ds ORDER BY id FOR XML PATH ('')),1,1,'') from PerIDSeperatedByDash 合作,但that看起来他们也提供了街道地图。

Elevation/World_Hillshade

给出了我在缓存中随机区域的下图:

lowres image of roads

我遇到的主要问题是test_map = Basemap(llcrnrlon=15.2,llcrnrlat=47.06,urcrnrlon=15.5, urcrnrlat=47.49, epsg = 31284,resolution='i',projection='merc',lon_0=14.8,lat_0=47.2) test__map.arcgisimage(service='ESRI_StreetMap_World_2D', xpixels = 12000, verbose= True) 部分,我还没有完全弄清楚,因此无法帮助华盛顿特区

答案 1 :(得分:-1)

我对使用epsg值有一点了解。

  1. 转到链接http://spatialreference.org/ref/?search=california&srtext=Search 尝试找到您要搜索的地方,例如,我以加利福尼亚为例
  2. 从所有链接中打开一个与您要映射的区域非常相似的链接。 我以这个为例:http://spatialreference.org/ref/epsg/2228/
  3. 您应该能够看到WGS84边界,该边界说明了此地图的边界
  4. 现在您可以在地图中自由使用此边界之间的任何边界,并使用给定的epsg值

萨克拉曼多的示例代码:

**plt.figure(figsize=(18,20))
test_map = Basemap(llcrnrlon=-121.900, llcrnrlat= 38.50, urcrnrlon=-121.00, urcrnrlat=38.7000, epsg = 2872,resolution='i',projection='merc',lon_0=14.8,lat_0=47.2)
#sacramento : 38.5816° N, 121.4944° W
#-123.0900, 36.7400, -117.8200, 38.7000
test_map.arcgisimage(service='ESRI_StreetMap_World_2D', xpixels = 12000, verbose= True)**