Note: I've also renamed some classes (e.g. GNMConnectivity -> GNMNetwork) and moved some methods from one class to another, due to the better correspondence to my concept. I'll describe the final architecture appearance a bit later, but it hasn't been changed a lot.
gnmmanage
The gnmmanage utility intends to provide all managing actions with networks: creating/deleting networks, creating/deleting features, setting/removing connections. For now it has the following usage:
So the way using utility is similar to my previous utility: gnminfo, which soon will be using only for getting info about the existing networks. All managing functionality will fully migrate to gnmmanage and it will be more close to the gdalmanage.>gnmmanage.exe --long-usageUsage: gnmmanage [--help][-q][-quiet][--utility_version][--long-usage][create [-f format_name] [-t_srs srs_name] [-dsco NAME=VALUE]... ][import src_dataset_name] [-l layer_name][autoconnect tolerance][remove][-nt]gnm_name
create: create connectivity or the full network, depending on native format support (-nt)-f format_name: output file format name, possible values are: [ESRI Shapefile]-t_srs srs_name: spatial reference input-dsco NAME=VALUE: dataset creation option (format specific) import src_dataset_name: dataset name to copy-l layer_name: layer name in dataset (optional)autoconnect tolerance: create topology automatically with the given double toleranceremove: remove connectivity or network, depending on native format support (-nt)-nt: use native network format (now unavailable)
The new method GNMNetwork::AutoConnect() tries to build the topology of the network automatically, as I described in my previous post. Remember, that if you will try to build a topology on several layers two times in different spatial reference systems - the results will be different. For example in our case the common network's SRS is 'EPSG:4326'. If we create a network in 'EPSG:3857', import all layers as previous and AutoConnect them with the same tolerance again (for me it was 0.00005) - the topology will differ from previous case.
gnmanalyse
The gnmmanage utility intends to provide all analysing functionality of GNM. It has the following usage:
For now it has the usage of only one method: GNMStdRoutingAnalyser::DijkstraShortestPath(). For example lets use it on the network, which had been built with the gnmmanage, the following way:>gnmanalyse.exe --long-usageUsage: gnmanalyse [--help][-q][-quiet][--utility_version][--long-usage][dijkstra start_gfid end_gfid [-ds ds_name][-f ds_format][-l layer_name]]gnm_name
dijkstra start_gfid end_gfid: calculates the shortest path between two points-ds ds_name: the name&path of the dataset to save the layer with shortest path. Not need to be existed dataset-f ds_format: define this to set the fromat of newly created dataset-l layer_name: the name of the resulting layer. If the layer exist already — it will be rewritten
So the path between features with 718 and 1185 GFIDs will be found and saved into the instantly created or opened Shapefile layer.>gnmanalyse.exe dijkstra 718 1185 -ds ..\shortestpath.shp -f "ESRI Shapefile" -l shortestpath ..\network_data
Path between 718 and 1185 found and saved to the ..\shortestpath.shp successfully