Как в GeoDMS читать большие файлы фигур? - PullRequest
0 голосов
/ 19 ноября 2018

У меня проблемы с чтением большого файла формы в GeoDMS GUI версии 7.177.

Я пытаюсь зачитать BAG (baseadministratie gemeenten, администрация голландского муниципалитета, гигантский географический файл) в GeoDMS непосредственно из Kadaster. Сначала он был преобразован из .xml в .csv, затем из .csv в .shp (используя библиотеку Python 'shapefile'). Когда я делаю выбор из 10 000 зданий, все идет хорошо. Однако, когда я хочу прочитать всю BAG (около 16 000 000 зданий), GeoDMS не может прочитать весь файл формы, через некоторое время загрузка ЦП приближается к 0%, и никакого дальнейшего прогресса, похоже, не будет.

Код:

/*
This program reads the BAG in .shp format and writes it to .dmsdata format for speedy processing in Minta
*/

container root
{
    unit<dpoint> rdc_base; // RDC stands for Rijksdriehoekscoordinaten, Dutch state coordinate system
    unit<dpoint> rdc    := range(rdc_base,point(300000.0,0.0),point(625000.0,280000.0)); // default rdc: built on doubles

    unit<uint32> bagRead:
        storageName     = 'c:/zandbak/intermediate/bagPND.dbf'
    ,   dialogData      = 'geometry'
    ,   dialogType      = 'map'
    ,   storageReadOnly = 'true'
    ,   isHidden        = 'true'
    {
        attribute<rdc> geometry(polygon):
            storageName     = 'c:/zandbak/intermediate/bagPND.shp'
        ,   storageReadOnly = 'true';
        attribute<string>buildingId;
        attribute<string>status;
        attribute<string>year;
    }

    unit<uint32> bagWrite := subset(bagRead/buildingId==bagRead/buildingId)
    ,   storageName     = 'c:/zandbak/output/bagPND.fss'
    ,   storageReadOnly = 'false'
    ,   dialogData      = 'geometry'
    ,   dialogType      = 'map'
    {
        attribute<uint32>   nr_OrgEntity;
        attribute<rdc>      geometry(polygon)   := bagRead/geometry[nr_OrgEntity];
        attribute<string>   buildingId          := bagRead/buildingId[nr_OrgEntity];
        attribute<string>   status              := bagRead/status[nr_OrgEntity];
        attribute<string>   year                := bagRead/year[nr_OrgEntity];
    }
}

Я запускаю этот код в пакетном режиме:

"C:\Program Files\ObjectVision\GeoDms7177\GeoDmsRun.exe" "C:\repository\vesta\bagpreprocessing\root.dms" /bagWrite

Как уже говорилось, этот кодекс хорошо работает для 10 000 зданий. Однако не для 16М зданий. Есть ли способ прочитать большие файлы формы в GeoDMS?

...