我想确定给定地理点(已知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