Открытый конвертер XML Росреестра в GeoJSON для web

Кроме QGIS
freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение freeExec » 14 фев 2017, 09:46

Надо использовать потоковый парсер. А загрузим всё в память потом разберемся - плохой метод, когда объёмы Гб-ты.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение Филиппов Владислав » 14 фев 2017, 09:48

но файл-то для начала нужно открыть.
а там уж по разному обрабатывать можно

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение freeExec » 14 фев 2017, 09:52

В том то и дело, что его не открывают целиком, а читают, грубо говоря построчно. В xml это будет наверное от тега, до тега.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение Филиппов Владислав » 14 фев 2017, 09:54

ну чем это делать в NodeJS?

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение freeExec » 14 фев 2017, 09:58

Филиппов Владислав писал(а):ну чем это делать в NodeJS?
Я на нём не пишу, но вот первая ссылка в гугле - https://github.com/assistunion/xml-stream

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение Филиппов Владислав » 14 фев 2017, 10:04

второй открытый мной пример содержит

Код: Выделить всё

var stream = fs.createReadStream(path.join(__dirname, 'collect-preserve.xml'));
это как раз тот самый NodeJS
и проблема не в том как обрабатывать полученные данные, а в том чтобы открыть их - var stream = fs.createReadStream
и проблема именно в этом fs, правда я использую не поток, а fs.readFile
Последний раз редактировалось Филиппов Владислав 14 фев 2017, 10:22, всего редактировалось 1 раз.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение freeExec » 14 фев 2017, 10:21

Тогда я видимо чего-то не понимая, причём тут ограничения браузера и серверная сторона открывающая файл?


freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение freeExec » 14 фев 2017, 10:34

А что находится в string, что там больше 200Мб, весь xml одной строкой?

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение Филиппов Владислав » 14 фев 2017, 10:40

если кратко, то суть происходящего такая:
я написал библиотеку на JavaScript по принципу CommonJS. Чтобы она заработала в браузерах, я использовал Browserify.
А потом написал это с использованием Electron(NodeJS), тут модульность CommonJS родная и файлы от первого проекта применяются во втором легко и без каких-либо изменений.
Проблемы возникают при открытии больших, более 500 мб, файлов.

а они бывают и 1,2 Гб

код такой (я и асинхронный тоже метод использовал)

Код: Выделить всё

function loadXml() {
    dialog.showOpenDialog(function (fileNames) {
        if (fileNames === undefined) {
            console.log("No file selected");
            // https://github.com/nodejs/node/pull/4394
        } else {
            fs.readFileSync(fileNames[0], 'utf-8', function (err, data) {
                if (err) {
                    alert("An error ocurred reading the file :" + err.message);
                    return;
                }
                parsedData = Converter.GeoJSON(data, false);
                console.log(parsedData);
                $('#save-geo').toggleClass('hidden');
            });
        }
    });
}

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение Филиппов Владислав » 14 фев 2017, 10:41

да, там всё в одну строку, хоть 6 Мб, хоть 600 Мб
Загрузки_002.png
Загрузки_002.png (169.25 КБ) 15822 просмотра

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение freeExec » 14 фев 2017, 11:08

Ну всё таки я был прав. Надо менять подход, считывать по-элементам. И в json отдавать по ним же.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение Филиппов Владислав » 14 фев 2017, 11:15

в общем, мне понятнее и удобнее DOM-подход и на Java всё отлично работает (мой LandProcessor), вот только РР так часто меняет версии схем, что для Явы, с её строгой типизацией, нужно генирить все классы каждый раз, да всё бы ничего, но они ещё и с задержкой выкладывают новые схемы на своём сайте. Это меня и подтолкнуло к использованию языка с динамической типизацией и так как я тогда (да и сейчас) много пишу на JavaScript, то выбор пал на него. А тут...
а если всё-таки использовать SAX-подход, то вы согласны начать работать вместе? Язык?

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение trir » 14 фев 2017, 11:23

вот только РР так часто меняет версии схем, что для Явы, с её строгой типизацией, нужно генирить все классы каждый раз, да всё бы ничего, но они ещё и с задержкой выкладывают новые схемы на своём сайте. Это меня и подтолкнуло к использованию языка с динамической типизацией
дело тут не в строгой типизации, мой конвертер от этого не страдает

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Открытый конвертер XML Росреестра в GeoJSON для web

Сообщение freeExec » 14 фев 2017, 11:24

Модель JavaScript можно же заменить на Dictonary<string, object> куда вкладывать аналогичные объекты, получится не строгая типизация.

Ответить

Вернуться в «Свободные, бесплатные, открытые ГИС»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей