在GeoDMS中,如何读取大型形状文件?

时间:2018-11-19 13:13:24

标签: geospatial geo geodms

我在GeoDMS GUI版本7.177中读取大型形状文件时遇到问题。

我正试图直接从Kadaster将BAG(basisadministratie gemeenten,荷兰市政当局,一个巨大的地理文件)读取到GeoDMS中。它首先从.xml转换为.csv,然后从.csv转换为.shp(使用Python'shapefile'库)。当我选择1万栋建筑物时,一切进展顺利。但是,当我想读取整个BAG(大约16000000建筑物)时,在CPU使用率接近0%之后,GeoDMS似乎无法读取整个形状文件,并且似乎没有进一步的进展。

代码:

/*
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

如前所述,该代码对1万栋建筑物有效。但是,不适用于1600万建筑物。有没有办法在GeoDMS中读取大型形状文件?

0 个答案:

没有答案