gpt4 book ai didi

c# - 解析 GML 文件

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:30 25 4
gpt4 key购买 nike

我遇到一个问题,我的代码有时只能工作,我希望有更多专业知识的人可以检查我做错了什么。根据一些阅读,直接查询标签作为后代似乎是获取我的信息的最简单方法,但我开始意识到这可能不是最好的方法。

我的代码:

XDocument GMLfile = XDocument.Load(thefile.gml);
XNamespace gml = "http://www.opengis.net/gml";

//--------------------------------------------------
var coordquery = from coords in GMLfile.Descendants(gml + "coordinates") select coords.Value;

foreach (var coords in coordquery)
{
listBox1.Items.Add(coords);
}

行为/问题:

它会正确解析一些文件并抓取所有水平对齐的坐标,但其他文件它只会抓取第一组逗号分隔的坐标并在空格分隔符处停止。

示例 GML 文件内容:

   <?xml version="1.0" encoding="utf-8" ?>
<ogr:FeatureCollection
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ogr.maptools.org/ zprocess.xsd"
xmlns:ogr="http://ogr.maptools.org/"
xmlns:gml="http://www.opengis.net/gml">
<gml:boundedBy>
<gml:Box>
<gml:coord><gml:X>-102.3542101578954</gml:X><gml:Y>48.27850492279583</gml:Y></gml:coord>
<gml:coord><gml:X>-100.6813690821913</gml:X><gml:Y>48.46080715637999</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>

<gml:featureMember>
<ogr:Dak fid="F0">
<ogr:geometryProperty><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-100.68704653821987,48.450386310687691 -100.68707054736575,48.450298060122066 -100.68710318142342,48.450211043099841 -100.68714430060783,48.450125632233721</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:Id>0</ogr:Id>
<ogr:Dist>500.00000000000</ogr:Dist>
</ogr:Dak>
</gml:featureMember>
</ogr:FeatureCollection>

如果有人想定义一个更好的方法来执行此操作或详细说明在解析 XML 的部分时如何正确使用 LINQ to XML,我将永远感激不尽!

亲切的问候,-GeekSmurf

最佳答案

试试这个:

XNamespace gml = "http://www.opengis.net/gml";

var qry = xDoc.Root
.Elements(gml + "boundedBy")
.Elements(gml + "Box")
.Elements(gml + "coord")
.Select(a=>new
{
x=a.Element(gml + "X").Value,
y=a.Element(gml + "Y").Value
});

以上查询返回:

x                    y
-102.3542101578954 48.27850492279583
-100.6813690821913 48.46080715637999

关于c# - 解析 GML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29462322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com