我想確定給定地理點(已知GPS座標)落在哪個美國州和縣。我相信我可以獲得有關州和縣角落座標的數據,但是我需要一種算法來計算點落在哪個州和縣。美國哪個州的地理位置落在哪個地區?
我不是Java或C用戶,但我是Panorama(provue.com)中非常有經驗的程序員,這是一個非常全面和功能強大的編程語言的數據庫管理系統。所以我需要訪問一個一般定義的算法。
邁克爾
我想確定給定地理點(已知GPS座標)落在哪個美國州和縣。我相信我可以獲得有關州和縣角落座標的數據,但是我需要一種算法來計算點落在哪個州和縣。美國哪個州的地理位置落在哪個地區?
我不是Java或C用戶,但我是Panorama(provue.com)中非常有經驗的程序員,這是一個非常全面和功能強大的編程語言的數據庫管理系統。所以我需要訪問一個一般定義的算法。
邁克爾
快速&髒:
您可以通過以下方式使用this project爲HTTP請求: http://www.ngs.noaa.gov/cgi-bin/spc_getpc.prl?LatBox=N385930.99999&LonBox=W0985930.99999
和解析,以提取狀態的響應。
首先,你應該有一組多邊形,每一個對應於美國各州像http://www.nws.noaa.gov/geodata/catalog/national/html/us_state.htm
然後你可以使用在http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html#The C代碼給出
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
int i, j, c = 0;
for (i = 0, j = nvert-1; i < nvert; j = i++) {
if (((verty[i]>testy) != (verty[j]>testy)) &&
(testx < (vertx[j]-vertx[i]) * (testy-verty[i])/(verty[j]-verty[i]) + vertx[i]))
c = !c;
}
return c;
}
nvert如下算法:數多邊形中的頂點。下面討論是否重複第一個頂點。包含多邊形頂點的x和y座標的數組。
testx,testy:測試點的X座標和Y座標。
+1這種方法的美妙之處在於,它可以用於任何你選擇的多邊形,所以它可以被重複使用來檢查縣或國家內的點或任意多邊形 – psubsee2003 2012-08-21 15:27:33
如果谷歌地圖API可以使用,你可以節省很多工作。 – 2012-08-17 07:02:22