Benchmarking 2011/Cadcorp notes

== Data ==
The "UNION ALL" views used by, for example, the "osm_roads" table are not usable by GeognoSIS because:
* No spatial index can be detected (this restriction could be relaxed, because PostGIS should work OK, albeit potentially slowly)
* No primary key/oid/unique id column can be detected
The views were converted to tables, and indexed, as follows:
create table osm_railways_gen1_cadcorp as (select * from osm_railways_gen1);
alter table osm_railways_gen1_cadcorp add column cadcorp_id serial;
create index osm_railways_gen1_cadcorp_geometry_sidx on osm_railways_gen1_cadcorp using gist(geometry);
insert into geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") SELECT , 'public', 'osm_railways_gen1_cadcorp', 'geometry', ST_CoordDim(geometry), ST_SRID(geometry), GeometryType(geometry) FROM public.osm_railways_gen1_cadcorp LIMIT 1;
create unique index osm_railways_gen1_cadcorp_unqidx on osm_railways_gen1_cadcorp(cadcorp_id);
This was done for the following Imposm tables:
* osm_railways_gen1
* osm_roads_gen0
* osm_roads_gen1
* osm_roads
Giving the following additional tables:
* osm_railways_gen1_cadcorp
* osm_roads_gen0_cadcorp
* osm_roads_gen1_cadcorp
* osm_roads_cadcorp
=== Styling ===
In order to mimic the layered styling the "osm_roads_gen1_cadcorp" and "osm_roads_cadcorp" tables have additional columns added, as follows:
alter table osm_roads_gen1_cadcorp add column cadcorp_simplefc int4;
alter table osm_roads_cadcorp add column cadcorp_simplefc int4;
alter table osm_roads_cadcorp add column cadcorp_complexfc int4;
== mapserver2geognosis ==
The MapServer MAP file was copied, edited to fix the "PROJ_LIB" setting to match the machine configuration (a freshly downloaded MS4W), then parsed via MapScript, in Python 2.6.
The output of the Python program is:
* A JSON file (approximately) describing the MapServer MAP file LAYER/STYLE/CLASS hierarchy
* A SQL file for adding styling codes to the "osm_roads_cadcorp" and "osm_roads_gen1_cadcorp" tables (see below)
* A JSON file containing styling lookup tables to match the styling codes
The first JSON file is then re-parsed and the contents used to create the GeognoSIS equivalent of a MapServer MAP file.
=== Style lookup codes ===
The following SQL is used to set styling codes on the "osm_roads_cadcorp" and "osm_roads_gen1_cadcorp" tables:
update osm_roads_cadcorp set cadcorp_simplefc=5 where type='trunk_link';
update osm_roads_cadcorp set cadcorp_simplefc=4 where type='motorway_link';
update osm_roads_cadcorp set cadcorp_simplefc=9 where type='track';
update osm_roads_gen1_cadcorp set cadcorp_simplefc=2 where type='trunk';
update osm_roads_cadcorp set cadcorp_simplefc=10 where type='pedestrian';
update osm_roads_cadcorp set cadcorp_simplefc=7 where type='tertiary';
update osm_roads_gen1_cadcorp set cadcorp_simplefc=3 where type='primary';
update osm_roads_gen1_cadcorp set cadcorp_simplefc=1 where type='motorway';
update osm_roads_cadcorp set cadcorp_simplefc=8 where type in ('unclassified','residential','service','road','living_street');
update osm_roads_cadcorp set cadcorp_simplefc=6 where type='secondary';
update osm_roads_cadcorp set cadcorp_complexfc=23 where type='secondary';
update osm_roads_cadcorp set cadcorp_complexfc=21 where type='trunk_link';
update osm_roads_cadcorp set cadcorp_complexfc=24 where type='tertiary';
update osm_roads_cadcorp set cadcorp_complexfc=20 where type='trunk';
update osm_roads_cadcorp set cadcorp_complexfc=22 where type='primary';
update osm_roads_cadcorp set cadcorp_complexfc=28 where type='footway';
update osm_roads_cadcorp set cadcorp_complexfc=25 where type in ('unclassified','residential','service','road','living_street');
update osm_roads_cadcorp set cadcorp_complexfc=19 where type='motorway_link';
update osm_roads_cadcorp set cadcorp_complexfc=26 where type='track';
update osm_roads_cadcorp set cadcorp_complexfc=27 where type='pedestrian';
update osm_roads_cadcorp set cadcorp_complexfc=18 where type='motorway';
update osm_roads_cadcorp set cadcorp_complexfc=8 where bridge=1 and type in ('classified','residential','service','road','living_street');
update osm_roads_cadcorp set cadcorp_complexfc=9 where bridge=1 and type='pedestrian';
update osm_roads_cadcorp set cadcorp_complexfc=6 where bridge=1 and type in ('secondary','secondary_link');
update osm_roads_cadcorp set cadcorp_complexfc=3 where bridge=1 and type='trunk';
update osm_roads_cadcorp set cadcorp_complexfc=5 where bridge=1 and type in ('primary','primary_link');
update osm_roads_cadcorp set cadcorp_complexfc=1 where bridge=1 and type='motorway';
update osm_roads_cadcorp set cadcorp_complexfc=7 where bridge=1 and type in ('tertiary','tertiary_link');
update osm_roads_cadcorp set cadcorp_complexfc=4 where bridge=1 and type='trunk_link';
update osm_roads_cadcorp set cadcorp_complexfc=2 where bridge=1 and type='motorway_link';
update osm_roads_cadcorp set cadcorp_complexfc=10 where type='motorway' and tunnel=1;
update osm_roads_cadcorp set cadcorp_complexfc=16 where type in ('tertiary','tertiary_link') and tunnel=1;
update osm_roads_cadcorp set cadcorp_complexfc=12 where type='trunk' and tunnel=1;
update osm_roads_cadcorp set cadcorp_complexfc=11 where type='motorway_link' and tunnel=1;
update osm_roads_cadcorp set cadcorp_complexfc=14 where type in ('primary','primary_link') and tunnel=1;
update osm_roads_cadcorp set cadcorp_complexfc=17 where type in ('unclassified','residential','service','road','living_street') and tunnel=1;
update osm_roads_cadcorp set cadcorp_complexfc=15 where type in ('secondary','secondary_link') and tunnel=1;
update osm_roads_cadcorp set cadcorp_complexfc=13 where type='trunk_link' and tunnel=1;
Category:FOSS4G2011