Прочитайте файл kml в проекте c #, чтобы вернуть информацию - PullRequest
2 голосов
/ 11 января 2012

Я пытаюсь прочитать файл KML в C #. Мне нужно прочитать эту информацию, чтобы получить информацию и обработать ее. Есть ли библиотека для чтения KML, предоставляющая информацию в структуре данных? Если нет, то как вы читаете файл KML? Это похоже на чтение XML-файла?

Ответы [ 3 ]

3 голосов
/ 12 января 2012

Я нашел решение.Проблема заключалась в том, что новый xsd-файл имеет несколько пространств имен, поэтому для преобразования в классы с использованием XSD.exe мне понадобилось еще два файла: atom-author-link.xsd и xal.xsd

После этого я использовал XSD.exeкомандная строка: xsd.exe /c ogckml22.xsd atom-author-link.xsd xal.xsd

Наконец, у меня были классы из файла xsd.

Дополнительная информация:

Я только что нашел эту библиотеку (http://sharpkml.codeplex.com/)для чтения / записи файлов kml 2.2. Это обновление libkml

2 голосов
/ 12 января 2012

Вот мой способ синтаксического анализа файла KML для получения координат объекта:

string elementToFind = "example";
System.IO.Stream kmlFile = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("objects.kml");
Xml.Linq.XDocument xDoc = System.Xml.Linq.XDocument.Load(kmlFile);
string xNs = "{" + xDoc.Root.Name.Namespace.ToString() + "}";

var coordsStr = 
(from f in xDoc.Descendants(xNs + "Placemark")
where elementToFind.Contains(f.Parent.Element(xNs + "name").Value + f.Element(xNs + "name").Value)
select f.Element(xNs + "LineString").Element(xNs + "coordinates")).FirstOrDefault();

Анализируйте его, как обычный файл XML, для поиска нужных вам данных.Надеюсь, это вам немного помогло.

0 голосов
/ 11 января 2012

Google предоставляет файлы XSD со схемой для файлов KML, вы можете найти их в расположении ниже.

http://code.google.com/apis/kml/schema/kml22gx.xsd

Вот документация для формата KML:

http://code.google.com/apis/kml/documentation/kmlreference.html

Вы можете использовать инструмент Microsoft XSD для создания классаиз схемы:

http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx

...