2011-03-11 26 views
2

我有大量的地理空間數據(緯度,經度)點(存儲在mongodb中,如果有幫助的話)的集合(和增長)。 我想生成一個choropleth地圖(http://vis.stanford.edu/protovis/ex/choropleth.html),它需要知道包含該點的狀態。有沒有一個數據庫或算法,可以做到這一點,而無需調用外部API(即我知道像geopy和谷歌地圖API的東西)。如何轉換lat lon爲zipcode或狀態以生成choropleth地圖

+0

我的膝蓋顛簸反應是建議反向地理編碼的位置,但我可以看到你不想使用外部API。我想你需要建立一個能夠識別國家邊界數據的圖書館,並且能夠根據這些數據繪製緯度/經度。我想知道有人是否已經在這裏完成了這項工作?有趣的問題:) – RedBlueThing 2011-03-11 03:23:31

回答

3

其實,你連接到Web應用程序包含你所需要的數據 -

如果你看一下http://vis.stanford.edu/protovis/ex/us_lowres.js每個狀態,邊界[]包含[緯度,經度]折線,概述了狀態。加載此數據並檢查多邊形中的點 - http://en.wikipedia.org/wiki/Point_in_polygon

根據Reverse Geocoding Without Web Access您可以通過預先計算每個狀態的邊界框並僅在多邊形中測試點邊界來加速它的速度-框。

+0

謝謝,趕上! :) – Andres 2011-03-14 22:08:39

1

Here的如何在FORTRAN中做到這一點。還記得FORTRAN嗎?我也不。無論如何,它看起來很簡單,因爲每個州都有自己的範圍。

編輯我已經指出,你的出發點是LAT-LONG,而不是郵政編碼。

將經緯度轉換爲政治分區的算法稱爲「地圖」。說真的,艾倫普通的地圖就是將某個範圍內的每個點映射到它所屬的範圍。所有48個連續狀態的詳細數字地圖將是一個大型數據庫,然後你需要一些(相當簡單的)代碼來確定每個狀態(描述爲一系列勾畫邊界的線段),給定的點是否在其內部或出去。數據

+0

Andres在詢問如何將lat/long轉換爲zip或state,而不是如何將zip轉換爲狀態。 – 2011-03-11 03:17:18

+0

哇,我讀「緯度郵政編碼或狀態」爲「緯度或郵政編碼狀態」。編輯... – Malvolio 2011-03-11 03:19:02

+0

嗯,我很欣賞你的嘲弄我。 – Malvolio 2011-03-11 04:14:49

0

不知道質量,而且給這一個鏡頭:http://www.boutell.com/zipcodes/

+0

謝謝!我以前見過。在仔細觀察後,它看起來像郵政編碼的latlon是它的中心。郵編區域有特定的形狀嗎?我想否則我可以對郵政編碼進行kNN投票。 – Andres 2011-03-11 04:15:28

+0

郵編區域有規律的形狀嗎? – Andres 2011-03-11 04:38:16

+0

我懷疑這些形狀是否規則,但也許你可以用Voronoi地圖(http://www.sgsi.com/MIUserGroup/Tech_FindNearest_SGSI.htm)近似。 – PaulMcG 2011-03-11 15:35:00

1

你可以嘗試使用Geonames數據庫。它具有長/拉以及城市,郵政和其他位置類型數據。它也是免費的。

但是,如果您需要將其託管在本地或將其導入到您自己的數據庫中,USGS和NGA將提供經緯度爲城市的綜合列表。它是正式更新,免費且可靠。

  1. http://geonames.usgs.gov
  2. http://earth-info.nga.mil/gns/html/index.html
+0

謝謝。有關郵編形狀的任何知識? – Andres 2011-03-11 04:40:29

0

如果你不介意非常粗液,可以適應點擊地圖here

+0

這是一個解決方案。請記住它。謝謝! – Andres 2011-03-11 04:05:22