2012-08-17 96 views
2

我想确定给定地理点(已知GPS坐标)落在哪个美国州和县。我相信我可以获得有关州和县角落坐标的数据,但是我需要一种算法来计算点落在哪个州和县。美国哪个州的地理位置落在哪个地区?

我不是Java或C用户,但我是Panorama(provue.com)中非常有经验的程序员,这是一个非常全面和功能强大的编程语言的数据库管理系统。所以我需要访问一个一般定义的算法。

迈克尔

+0

如果谷歌地图API可以使用,你可以节省很多工作。 – 2012-08-17 07:02:22

回答

1

首先,你应该有一组多边形,每一个对应于美国各州像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

+1这种方法的美妙之处在于,它可以用于任何你选择的多边形,所以它可以被重复使用来检查县或国家内的点或任意多边形 – psubsee2003 2012-08-21 15:27:33

相关问题