SASGIS - SAS.Планета
View Issue Details
0002536SAS.ПланетаРефакторингpublic08-11-2014 12:4411-12-2014 15:08
zed 
 
normalminorhave not tried
confirmedopen 
140505 
29xxxx 
0002536: Сделать парсер kml на базе libkml
У гугла есть опенсорсная (New BSD License) референсная реализация парсера kml файлов: https://github.com/google/libkml с поддержкой всех фич kml 2.2. Помимо kml, либа умеет парсить gpx и csv файлы.

Библиотека написана на С++ и к сожалению, не имеет Си обёртки, поэтому нельзя просто взять и заюзать её в Delphi. Предварительно нужно написать небольшой врапер на Си, предоставляющий минимально-необходимый API для парсинга kml.
csv, google, google earth, gpx, kml, kmz, импорт
related to 0000425resolved zed Добавить обработку <Folder> при импорте из .kml 
related to 0002331confirmed  Дублирование трека при импорте kml 
related to 0000426resolved zed Добавить обработку <LineStyle>, <PolyStyle> при импорте из .kml 
Issue History
08-11-2014 12:44zedNew Issue
08-11-2014 12:50zedDescription Updatedbug_revision_view_page.php?rev_id=6307#r6307
08-11-2014 12:53zedTag Attached: csv
08-11-2014 12:53zedTag Attached: google
08-11-2014 12:53zedTag Attached: google earth
08-11-2014 12:53zedTag Attached: gpx
08-11-2014 12:53zedTag Attached: kml
08-11-2014 12:53zedTag Attached: kmz
08-11-2014 12:55zedRelationship addedrelated to 0000425
08-11-2014 13:12zedRelationship addedrelated to 0002331
08-11-2014 13:13zedRelationship addedrelated to 0000426
08-11-2014 13:13zedTag Attached: импорт
10-12-2014 10:33vdemidovStatusnew => confirmed
10-12-2014 10:33vdemidovTarget Version => 29xxxx
11-12-2014 12:07zedNote Added: 0015037
11-12-2014 13:42vdemidovNote Added: 0015038
11-12-2014 14:26zedNote Added: 0015039
11-12-2014 15:08vdemidovNote Added: 0015040

Notes
(0015037)
zed   
11-12-2014 12:07   
Полезный линк о том, как делать сишную обёртку над С++ кодом: Elegantly call C++ from C
(0015038)
vdemidov   
11-12-2014 13:42   
Честно говоря делать С обертку над С++ кодом, что бы потом сделать Delphi обертку над С либой это не то чем хочется заниматься. Гораздо лучше сделать COM-подобную обертку над С++ кодом и сразу использовать ее из кода на Delphi. И если бы не делфовские строки, то это было бы и не сложно сделать. Но вот строки......
(0015039)
zed   
11-12-2014 14:26   
Да, тоже вариант. А строки придётся конвертировать в любом случае, что в Си-обёртке, что в COM.

Вот, кстати, ещё ссылка в тему: Using C++ objects in Delphi
(0015040)
vdemidov   
11-12-2014 15:08   
> А строки придётся конвертировать в любом случае, что в Си-обёртке, что в COM.
А это приводит нас к тому, что нужно или в программе везде использовать WideString строки, которые можно вернуть из COM, или опять делать еще один слой оберток на Delphi, что приводит нас опять к куче бесполезной работы как с точки зрения написания кода, так и с точки зрения производительности. Печалька :(