0

我有一个功能,用户上传 KML 文件,我使用 XSLT 将其转换为 GML,然后将其保存到另一个文件。我的问题是如何在 MVC 中使用 GeomFromGML() 将此 GML 数据导入几何列?

完全被难住了,找不到任何好的例子。以下是我的上传和转换代码:

var fileName = Path.GetFileName(Polygon.FileName);
                var path = Path.Combine(Server.MapPath("~/App_Data/uploads"),fileName);
                Polygon.SaveAs(path);
                XPathDocument myXPathDoc = new XPathDocument(path);
                XslCompiledTransform myXslTrans = new XslCompiledTransform();
                myXslTrans.Load(Server.MapPath("~/App_Data/XSL/kml2gml2.xsl"));
                var gml = Path.Combine(Server.MapPath("~/App_Data/GML/gml.xml"));
                XmlTextWriter myWriter = new XmlTextWriter(gml, null);
                myXslTrans.Transform(myXPathDoc, null, myWriter);
4

1 回答 1

1

我对 GeomFromGML() 从来没有任何运气,所以我使用了 NetTopologySuite。它包含两个类:GMLReader 和 WKTWriter,您可以使用它们首先读取 GML,然后将其写入 WKT。可以使用 STGeomFromtext 将 WKT 插入数据库以将其保存在 SQL 数据库中:

GMLReader gmlr = new GMLReader();
WKTWriter wktw = new WKTWriter();
IGeometry g = gmlr.Read(gmlxml);
string wkt = wktw.Write(g);
string sql = "INSERT INTO mytable (GeomCol) VALUES (geometry::STGeomFromText('"+wkt+"', 0));";

或者也许您的 XSLT 可用于将 KML 直接转换为 WKT?

于 2012-10-12T14:39:47.533 回答