如何在WKT中处理圆形?

8
我有一个JSON对象:
area:CIRCLE(28.625360369528934 77.2227479486792,3135.6)
如何使用WKTreader解析它?
2个回答

4

您需要回到撰写此内容的人那里,解释CIRCLE不是WKT标准的一部分,并建议他们停止使用它。

然后,最好生成一个有很多(200)边的多边形来近似圆形,可能使用JTS缓冲区方法。

Point p = gFactory.createPoint(28.625360369528934 77.2227479486792);
Polygon circle = p.buffer( 3135.6 );

谢谢兄弟!!那真的帮了我很多!! - codepeaker
1
WKT确实支持曲线 - 从v1.2.1开始:“基本几何类有点、曲线、曲面和几何集的子类”。但是请注意,WKT不支持圆,然而具有相同起点和终点的曲线将呈现出圆形。 - George of all trades
1
@Georgeofalltrades,您引用的短语是关于抽象中的几何模型的。WKT序列化(在Common Architecture的第7节中介绍)并没有提到序列化曲线的方法。我可能对此有所错误,因此,如果您认为可能,请详细说明使用曲线表示的圆在WKT中会是什么样子? - Jeen Broekstra
您可以使用CircularString WKT表示一个圆,例如:CIRCULARSTRING(4 1, 7 4, 4 7, 1 4, 4 1)。请参阅此链接以获取更多示例。您可以将其包装在CompoundCurve中,以获得表面。 - BenMorel

3

另一个选择是接受中心点和半径。这将使您确定其他地理形状是否在“该区域”内或附近。

{
   "wkt": "POINT(28.625360369528934 77.2227479486792)",
   "radius": 50
}

这种方法比生成成百上千个点更加精确,因为你完全不会损失圆的外形。只有在所分享的形状不是一个完美的圆时,转换为多边形才更好(否则此方法将会是“有损的”)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接