GeoDMS,是否有示例代码将csv文件直接转换为fss文件?

时间:2019-04-11 08:57:05

标签: geodms

我正在创建一个GeoDMS配置,该配置读取GTFS文件(以csv格式存储),从这些文件中构造一个时空显式的网络,然后根据该网络计算OD行程时间矩阵。

我目前正在使用StorageType =“ gdal.grid”属性读取csv文件,这很有用,因为以这种方式,我不必指定av先验的csv文件的长度。但是,为了加快计算速度,我想将原始的csv文件转换为GeoDMS本地的fss文件,因为这将大大加快数据读取的速度。

但是,如果我没记错的话,我需要明确定义要存储到fss文件中的所有属性,对吗?简而言之,是否存在将csv文件存储到fss文件中的示例代码?

当前正在加载csv文件,并将中间结果存储到shapefile中。但这不是很优雅。理想情况下,我会使用一个将csv文件“复制”到fss文件而无需知道基数或字段名a-priori的函数。如果我需要指定所有字段名称,那么这也不成问题。

当前尝试以下非常幼稚的操作,这不起作用。

Template LoadCsvThroughGDAL {

parameter<File_Structure> inFile;

unit<uint32> Data: StorageName = "= '%DataDir%/_feeds/'+AvailableFeeds/Name[inFeed]+'/'+File_Structure/Name[inFile]+'.csv'", StorageType = "gdal.vect", StorageReadOnly = "True";

unit<uint32> StoreFSS: expr = "Data", StorageName = "= '%DataDir%/_feeds/'+AvailableFeeds/Name[inFeed]+'/fss/'+File_Structure/Name[inFile]+'.fss'";

}

2 个答案:

答案 0 :(得分:1)

克里斯,

以下是一个适用的示例:
1)从.csv文件读取数据
2)将数据写入.fss文件
3)从此.fss文件再次读取数据
无需显式配置属性名称。

parameter<string> SourceDir := '%SourceDataDir%/OV/GTFS_20190318';
container write_to_fss
{
   unit<uint32> trip
   : StorageName     = "=SourceDir + '/trips.csv'"
   , StorageType     = "gdal.vect"
   , StorageReadOnly = "True";

   unit<uint32> name := SubItem_PropValues(trip,'name');
   unit<uint32> fssdomain := trip;

   container to_fss := for_each_nedv(name/name, 'trip/' + name/name, fssdomain, string)
   ,    StorageName = "=SourceDir + '/trip.fss'"
   {
      unit<uint32> domain := fssdomain;
   }
}

container readdomain: StorageName = "=SourceDir + '/trip.fss'"
,   StorageReadOnly = "True"
{
    unit<uint32> domain;
}

container trip := for_each_ndv(write_to_fss/name/name, readdomain/domain, string)
, StorageName     = "=SourceDir + '/trip.fss'"
, StorageReadOnly = "True"
{
    unit<uint32> domain;
}

答案 1 :(得分:0)

如果您将读取域从旅行容器中取出,它应该可以工作。

@PutMapping(value = "/account/{accountUid}/savings-goals/{savingsGoalUid}/add-money/{transferUid}")
public Response getUserHistory(Amount amount,
                               @PathVariable("accountUid") UUID accountUid,
                               @PathVariable("savingsGoalUid") UUID savingsGoalUid,
                               @PathVariable("transferUid") UUID transferUid) {
    log.info("Amount: " , amount);

    return null;
}