我正在寻找C或C ++代码来识别点(坐标)是否位于KML多边形内。
我搜索过,但我得到的只是javascript(谷歌地图apis),可以实现相同。我甚至无法直接移植它,因为我有一个略微修改的要求:
据我所研究,第二点尚未实现。我想知道如何在C或C ++中实现这一点?或者,我是否错过了搜索任何现有来源?
想有投入。
扩展了开源libkml C ++库并在其中实现了多边形点。这是源代码:
https://github.com/gumdal/libkml-pointinpolygon
我还没有达到上述问题的第二点。虽然这个问题的任何线索都会受到赞赏:)
我正在寻找一个C / C ++的KML库,并且发现了你的帖子。看起来像是6岁+旧,但如果有人来这里寻找你问题的第二部分......
我不记得我在网上挖了这个,所以我不能给予/信任。
// *************************************************************************
//
// Function: distToLine
//
// Usage: Calculate the shortest distance to a line
//
// Params: x1 - Line start x
// y1 - Line start y
// x2 - Line end x
// y2 - Line end y
// ptX - Observation Point x
// ptY - Observation Point y
//
// Returns: Distance
//
// Notes:
//
// *************************************************************************
double distToLine(double x1, double y1, double x2, double y2, double ptX, double ptY)
{
double dx;
float dy;
float t;
dx = x2 - x1;
dy = y2 - y1;
if ((dx == 0) && (dy == 0))
{
dx = ptX - x1;
dy = ptY - y1;
return sqrt(dx * dx + dy * dy);
}
t = ((ptX - x1) * dx + (ptY - y1) * dy) / (dx * dx + dy * dy);
if (t < 0) // point is nearest to the first point i.e x1,y1
{
dx = ptX - x1;
dy = ptY - y1;
}
else if (t > 1) // point is nearest to the end point i.e x2,y2
{
dx = ptX - x2;
dy = ptY - y2;
}
else // if perpendicular line intersect the line segment.
{
dx = ptX - (x1 + t * dx);
dy = ptY - (y1 + t * dy);
}
return sqrt(dx * dx + dy * dy); // returning shortest distance
}
// distToLine()