
ArcGIS Pro弧转多段线后续
这不是,今天问题又来了,还是接着上面的错误然后心态崩了啊,MD不是已经转过了么?那么开始单步执行,然后崩溃的又来了,这个元素有弧但是遍历Segment都是Line,弧在哪里?那么再进一步,转出来Json看看:这横平竖直的,连个‘C’都看不到啊,哪里有弧……然后去问了DeepSeek,回答的也比较有艺术。
·
问题描述
昨天刚刚发了一篇文章,解决了弧到底如何转多段线然后入库,开始还在沾沾自喜,觉得问题解决了,之前的文章链接在这儿:弧转多段线
这不是,今天问题又来了,还是接着上面的错误
然后心态崩了啊,MD不是已经转过了么?那么开始单步执行,然后崩溃的又来了,这个元素有弧
但是遍历Segment都是Line,弧在哪里?
那么再进一步,转出来Json看看:
这横平竖直的,连个‘C’都看不到啊,哪里有弧……然后去问了DeepSeek,回答的也比较有艺术
解决方案
好了,知道问题可能是出在之前的数据提供方已经做了简化(ArcMap中可能没有暴露HasCurves的相关函数,导致元素更新了,索引和数据记录没有更新?)那就好办了,既然可以转Json
try
{
var wktString = GeometryEngine.Instance.ExportToWKT(WktExportFlags.WktExportDefaults, shape);
var wktReader = new NetTopologySuite.IO.WKTReader();
var geom = wktReader.Read(wktString);
shapeProperty.SetValue(addItem, geom);
}
catch
{
var json = shape.ToJson();
var geometry = GeometryEngine.Instance.ImportFromJson(
JsonImportFlags.JsonImportDefaults, json);
var wktString = GeometryEngine.Instance.ExportToWKT(WktExportFlags.WktExportDefaults, geometry);
var wktReader = new NetTopologySuite.IO.WKTReader();
var geom = wktReader.Read(wktString);
shapeProperty.SetValue(addItem, geom);
}
就这样吧……已经增密的图层理论上不存在弧,那么应该就是都是线段组合,也不用担心丢失什么精度了,使用Json重新创建的Geometry里面HasCurvers()的属性返回的就是false了,这种方式理论上对我代码的改造量最小,就这么干了,然后成功上传数据库……结束。
写这个东西一方面是记录下,避免下次遇到问题不知道怎么解决……
另一方面么……让朋友们别踩坑,因为你永远不清楚源数据的千奇百怪……
更多推荐
所有评论(0)