PropertyMap
PropertyMaps are used throughout the GeognoSIS HTTP API to allow a number of value pairs to be sent or received as part of the request. They are structured using JSON and can be identified by the PropertyMap.
PropertyMap as part of a response
Some requests such as
http://server:port/geognosis/9/sessions/session_id/map/overlays/0/dataset/properties.json
will return a PropertyMap of data:
{"Data": {"PropertyMap": {"_idNextItem&":411, "_nItems&":410, "_size@":{"ui8":"18657092"}, "_name$":"C:\\Data\\NaturalEngland\\CountryParksBDS.bds", "_projection$":"PROJCS[\"OSGB 1936.British National Grid\",GEOGCS[\"Latitude/Longitude.OGC.OSGB_1936\",DATUM[\"OSGB_1936\",SPHEROID[\"Airy 1830\", 6377563.396,299.32496460007]],PRIMEM[\"Greenwich\",0],UNIT[\"degrees\",0.0174532925199433]], PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"Central_Meridian\",2],PARAMETER[\"False_Easting\", 400000],PARAMETER[\"False_Northing\",100000],PARAMETER[\"Latitude_of_Origin\",49], PARAMETER[\"Scale_Factor\",0.9996012717],UNIT[\"m\",1]]", "_report$": {"Dataset": {"PropertyMap": {"_name$":"C:\\Data\\NaturalEngland\\CountryParksBDS.bds","_crs$": "OSGB 1936.BritishNationalGrid", "_epsg&":27700,"_loadTime#":0.386679338934585,"_bV6FileFormat&":false } } },"_epsg&":27700 } }, "Up":"../dataset.json", "Representations":"properties", "Operations":"properties.json?" }
Whilst most information is returned as pairs structured as "property_name":property_value there are cases where a PropertyMap is returned within the PropertyMap response.
In the response above, the _report$ property contains a range of information about the layer and load times so requires a number of items which are best returned as a PropertyMap.
Using a PropertyMap in a PATCH request
You also need to send a PropertyMap as part of the request if the request would return the information to you as a PropertyMap.
The following request asks for the properties of a theme legend:
http://server:port/geognosis/9/sessions/session_id/map/overlays/1/themes/1/properties.json
Response
{"Data":{"PropertyMap":{"_formula$":"DescriptiveGroups$","_nValues&":16,"_title$":"DescriptiveGroups", "_text_opaque&":true,"_brush$":{"Brush":{"Style":"Solid","Colour":{"RGBA":[255,255,255,0]}}}, "_font$":"Segoe UI","_pen$":{"Pen":{"Colour":{"RGBA":[0,0,0,0]},"LineCap":"Round","LineJoin":"Round"}}}}, "Up":"../1.json","Representations":"properties","Operations":"properties.json?"}
The legend looks like this:
Note: You can request the legend using http://localhost:4355/geognosis/8.0/sessions/123/map/overlays/1/themes/1.png
To update the title of the legend, use a PATCH request:
http://localhost:4355/GeognoSIS/8.0/Sessions/123/Map/Overlays/1/Themes/1/Properties.json
adding the following as the raw payload:
{"PropertyMap":{"_title$": "MasterMap Themes"}}
The HTTP API always Base64-encodes Item bookmarks as these can contain non-URL-friendly characters (e.g. /.)