ms2nom -- Soviet nomenclature map calculations
ms2nom [-E] [-W] --cover <figure> -s <scale> -- maps covering the figure
ms2nom [-E] [-W] -n <name> -- map range
ms2nom [-E] [-W] -n <name> [--cover_ratio] --cover <figure> -- check if the map touches given figure
ms2nom [-E] -n <name> -g <geodata> -- check if the map touches geodata (tracks and points)
ms2nom [-E] [-W] -c -n <name> -- map center
ms2nom [-E] -n <name> --shift [x_shift,y_shift] -- adjacent map
ms2nom [-E] -n <name> -s <scale> -- convert map to a different scale
If --name and --cover_ratio is given show which part of the map is covered by the figure. If only --name is given, check if the figure touches the map. Otherwise show map names which cover the figure (--scale should be set). Figure is a point, rectangle, line, multiline in WGS84 coordinates, or a geodata file with tracks or points.
See --cover option.
Set map scale. Scale should be set when --cover option is used. If used with --name option then name will be converted to a new scale instead of printing the range.
Show coordinate range for a given map.
Use 'extended mode': single sheets (like Q10-001) are allowed on input and always returned on output; for a single sheet suffix '.<N>x<M>' is allowed to multiply the range (like n49-001.3x2).
Use WGS datum for coordinates (instead of Pulkovo).
Instead of printing a coordinate range print its central point.
Shift a map. Should be used with --name option. Not compatable with --cover option. Argument is an array of two integer numbers [dx,dy].
Show help message.
Show help message as POD template.
Program "ms2nom" does some calculations with standard Soviet nomenclature map names.
Option --ext (-E) turns on 'extended mode': single sheets (like Q10-001) are allowed on input and always returned on output; for a single sheet suffix '.<N>x<M>' is allowed to multiply the range (like n49-001.3x2).
At the moment combination of --ext and --shift options with such a "multiplied" name returns non-multiplied adjecent sheets. This is not very useful and maybe changed later.
If both --cover and --name (-n) options are given program returns with exit code 0 or 1 depending on whether the map covers the given figure.
Soviet nomenclature maps use Pukovo-1942 datum (+ellps=krass +towgs84=28,-130,-95). By default Pulkovo datum is used for all calculations. In this datum map corners have round coordinates. If option --wgs (-W) is given then WGS datum is used instead of Pulkovo.
Supported scales: 1:1000000, 1:500000, 1:200000, 1:100000, 1:50000.Scale can be written in following forms: * 1:1000000, 1:1'000'000, 1000000, 1M, 10km/cm * 1:500000, 1:500'000, 500000, 500k, 5km/cm * 1:200000, 1:200'000, 200000, 100k, 1km/cm * 1:100000, 1:100'000, 100000, 100k, 1km/cm * 1:50000, 1:50'000, 50000, 50k, 500m/cm
Which 1:100000 map is covering a point lon=69, lat=36:
$ ms2nom -r "[69,36]" -s 1:100000
j42-139
Which 1:100000 maps are touching range lon=36.0-36.5, lat=70.0-70.5:
$ ms2nom -r "[36,70,0.5,0.5]" -s 1:100000
r37-049,050
r37-061,062
Coordinate range and center of j42-1 map:
$ ms2nom -n j42-1
[66,38,3,2]
$ ms2nom -n j42-1 -c
[67.5,39]
Right neighbour of j42-112-2 map:
$ ms2nom -n j42-112-2 --shift [1,0]
j42-113-1
List of 1:50'000 maps for p42-111,112 map:
$ ms2nom -n p42-111,112 -s 50k
p42-111-1,2
p42-111-3,4
p42-112-1,2
p42-112-3,4
Opposite:
$ ms2nom -n p42-111-3,4 -s 100k
p42-111,112
Test if map touches a coordinate range:
$ ms2nom -n n37 -r "[36,52,1,1]"; echo $?
0
$ ms2nom -n n37 -r "[26,52,1,1]"; echo $?
1
Vladislav Zavjalov <slazav@altlinux.org>