我正在创建一个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'";
}
答案 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;
}