Страница 3 из 3

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

Добавлено: 14 фев 2017, 09:46
freeExec
Надо использовать потоковый парсер. А загрузим всё в память потом разберемся - плохой метод, когда объёмы Гб-ты.

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

Добавлено: 14 фев 2017, 09:48
Филиппов Владислав
но файл-то для начала нужно открыть.
а там уж по разному обрабатывать можно

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

Добавлено: 14 фев 2017, 09:52
freeExec
В том то и дело, что его не открывают целиком, а читают, грубо говоря построчно. В xml это будет наверное от тега, до тега.

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

Добавлено: 14 фев 2017, 09:54
Филиппов Владислав
ну чем это делать в NodeJS?

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

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

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

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

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

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

Добавлено: 14 фев 2017, 10:22
Филиппов Владислав

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

Добавлено: 14 фев 2017, 10:34
freeExec
А что находится в string, что там больше 200Мб, весь xml одной строкой?

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');
            });
        }
    });
}

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

Добавлено: 14 фев 2017, 10:41
Филиппов Владислав
да, там всё в одну строку, хоть 6 Мб, хоть 600 Мб
Загрузки_002.png
Загрузки_002.png (169.25 КБ) 16578 просмотров

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

Добавлено: 14 фев 2017, 11:08
freeExec
Ну всё таки я был прав. Надо менять подход, считывать по-элементам. И в json отдавать по ним же.

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

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

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

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

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

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