MAPublisher en de achterliggende data

Voor een MAPublisher project moet ik top10nl data gebruiken. Maar welk format ? GML van de PDOK-site of de Postgis database van NLExtract? En hoe beperk je de data tot het relevante kaartbeeld? Aha, in dat geval Postgis graag!De top10nl van het Kadaster komt in steeds meer formats beschikbaar. Via de PDOK-site in GML (voor heel Nederland of per kaartdeel), of in de vorm van een Postgis database (aangeboden via NLExtract) en zelfs als geodatabase als je Arcgis abonnee bent. De laatste laat ik buiten beschouwing

Om in MAPublisher (de GIS addon van Adobe Illustrator) data te gebruiken voor slechts een klein deel van Nederland, kan ik de eerste twee formats inlezen. Alleen welke is het handigst?

GML

Ik ga naar PDOK en download daar een gebied op de kaart, zodat ik niet gans Nederland binnenkrijg.

In MAPublisher duurt het 2,5 minuut om zo’n bestand (ong. 700 MB) in te lezen. Daarna duurt het importeren naar het canvas ook nog eens zo’n 30 minuten. En mijn PC is daarna redelijk verlamd. In andere gevallen liep ie vast, terwijl 16 GB intern geheugen toereikend moet zijn.

En als het al lukt, moet je daarna als laatste stap nog eens via de Map Vector Rectangle Crop Tool de data definitief beperken tot de canvas.

POSTGIS

Inlezen vanaf de Postgis database gaat zeer vlot. Je moet de top10nl als database natuurlijk wel geïnstalleerd hebben staan. Grote voordeel is dat je bij het inlezen in MApublisher al kan aangeven tot welk gebied je het wilt beperken: de search enveloppe. Vervolgens worden binnen luttele seconden de tabellen als lagen in Illustrator opgevoerd.

Als alternatief had ik database views willen maken die onmiddellijk al de data inperken tot het gebied dat je wilt. Ik heb een net pgsql script gemaakt om voor dat doel van alle tabellen views te maken. Dat zag er als volgt uit:

DO
$$
DECLARE
tbl regclass;
nbrow bigint;
boundbx varchar := '92121, 463672, 92982, 464921';

BEGIN
FOR tbl IN
  SELECT c.oid
  FROM pg_class c
  JOIN pg_namespace n ON n.oid = c.relnamespace
  WHERE relkind ='r'
  AND n.nspname ='ttnl'
  ORDER BY n.nspname, c.relname

LOOP
 EXECUTE'CREATE OR REPLACE VIEW '|| tbl ||'_boundbx AS SELECT * FROM '|| tbl ||' WHERE '|| tbl ||'.wkb_geometry && ST_MakeEnvelope('|| boundbx ||')';
END LOOP;

END

$$;

Helaas …:

  • zonder views gaat het al snel genoeg
  • MAPublisher accepteert geen database views als input.

Wellicht later. Of meer iets voor batch processing. Bijvoorbeeld bij de aanmaak van een kaartserie. Daarbij zou je op basis van telkens twee coördinaten (dus 4 waarden) tijdelijke views kunnen aanmaken, waarbij je deze met behulp van FME wegschrijft naar een export format, zoals shapefiles of geopackages. In elke kaart wordt dan alleen geladen wat van toepassing is, niet meer en niet minder.