Zoals Mapserver werkt
De vorige keer hebben we gesproken over een aantal criteria waarom MapServer en de basisprincipes van installatie. Laten we nu eens kijken naar de werking ervan in een oefening met de kaarten van de Chiapas cuates.
Waar is gemonteerd
Nadat Apache is geïnstalleerd, is de standaard MapServer-publicatiedirectory de map OSGeo4W direct boven C: /
Binnenin zijn er verschillende mappen met applicaties, afhankelijk van wat er is geïnstalleerd, maar de map voor publicatie moet in apache zitten. In dit geval is de map met de naam gis.
- Dan bevat de gegevensmap de lagen, orthophoto, enz.
- In de map etc staan de true-type fonts die voor de labels worden gebruikt, met de extensie .ttf. Hier is ook een txt-bestand dat ze opheft en een ander dat symbolen definieert.
- En eindelijk in de map gaan httdocs naar de webpagina's die de dienst verhogen.
De webpagina
In het voorbeeld gebruik ik de case die de laatste keer is weergegeven. Het bevat in feite een indexbestand dat doorverwijst naar een bestand met een phtml-extensie, en dit verhoogt op zijn beurt de functies die bovenop een php en de kaarten zijn gebouwd. Een map bevat de afbeeldingen die vanaf de pagina zijn gelinkt.
Als we ernaar kijken, is de phtml gewoon de shell die is opgebouwd uit tabellen, en roept de mapscript / php-functies op. U moet opstaan met:
http://localhost/gis/gispalenque.phtml
Hieronder volgt het resultaat:
- naar het centrum de functie GMapDrawMap (),
- rechts de oproep naar keymap GMapDrawKeyMap (),
- de schaalbalk hieronder GMapDrawScaleBar (),
- en in het geval van de implementatie functies, een voorwaarde met betrekking tot de lijstbox if (! IsHtmlMode ()) echo " met beslissingen: ZOOM_IN, ZOOM_OUT, RECENTER, QUERY_POINT.
De implementatie ziet er al uit:
De .map-bestanden
De combinatie van de publicatie Mapserver is in wat Apache ophaalt, die php doorgeeft mapscript en dat komt dan uit die schaal. Maar de meeste wetenschap zit in .map-bestanden, niet te verwarren met bestanden die zijn gegenereerd door Mapinfo, Manifold of Mobile Mapper Office met dezelfde extensie.
Deze .map zijn tekstbestanden die de kaart in scriptvorm bevatten. Deze kunnen worden gemaakt met desktopprogramma's zoals Quantum GIS, als je kijkt, is er een voor de hoofdkaart, een voor de Keymap en twee voor de OGC wms- en wfs-services. Laten we eens kijken hoe mapscript werkt:
MAP
NAME PALENQUE_DEMO
STATUS AAN
SIZE 600 450
SYMBOLSET ../etc/symbols.txt
EXTENT 604299 1933386 610503 1939300 #LIJST VAN ALLE KAART VAN PALENQUE
#EXTENT 605786 1935102 608000 1938800 #SOLO DE 01-SECTOR
EENHEDEN METERS
SHAPEPATH "../data"
TRANSPARENT AAN
IMAGECOLOR 255 255 255
FONTSET ../etc/fonts.txt
- MAP geeft startschrift aan
- STATUS, geeft aan of de standaardkaart is ingeschakeld of niet
- SIZE is de grootte van het scherm
- SYMBOLSET toont het pad van de symbolen
- EXTENT zijn de weergavecoördinaten. Het # -symbool wordt gebruikt om annotaties te maken
- EENHEDEN voor eenheden
- SHAPEPATH, het pad waar de lagen zijn
- Alles aan het einde eindigt met het END commando
Binnen begint de code met een opdrachtregel en eindigt met END, bijvoorbeeld voor minimum en maximumschaal; map van tijdelijke beelden:
WEB
MINSCALE 2000000
MAXSCALE 50000000IMAGEPATH "C: \ OSGeo4W / tmp / ms_tmp /"
IMAGEURL "/ ms_tmp /"
EINDE
De schaalbalk:
schaalaanduiding
IMAGECOLOR 255 255 255
LABEL
KLEUR 0 0 0
MAAT KLEIN
EINDE
SIZE 300 5
KLEUR 255 255 255
ACHTERGRONDKLEUR 0 0 0
OUTLINECOLOR 0 0 0
UNITS kilometers
INTERVALLEN 3
STATUS AAN
EINDE
Een rasterlaag: die op de achtergrond gaat, met een beschrijving in de lijst als "Orthophoto", van een tiff in de datamap:
LAAG
NAME orthophoto
METADATA
"BESCHRIJVING" "OrtoFoto"
EINDE
TYPE RASTER
STATUS UIT
DATA "C: \ OSGeo4W / apps / gis / data / orthophotoGral.tif"
#OFFSITE 0 0 0
EINDE
Een shp-laag van polygonen, gethematiseerd op basis van criteria, een aantal gegevens op een html-sjabloon, met een sans-letterlabel, grootte 6, zwarte kleur en witte randen van 5-buffer ...
LAAG
NAME-sector02Zone
TYPE POLYGON
STATUS UIT
TRANSPARANTIE 50
OMVANG 607852 1935706 610804 1938807 METADATA
"BESCHRIJVING" "Thema op waardenector 02"
"RESULT_FIELDS" "MsLink Cve_Mz Cve_Pred prop Area Perimeter VALUE"
EINDE
DATA PALENQUE_SECTOR01
SJABLOON "ttt_query.html"
TOLERANTIE 5
#TOLERANCEUNITS PIXELS
LABELITEM "WAARDE"
CLASSITEM "WAARDE"
LABELCACHE OP
KLASSE
SYMBOL 1
KLEUR 128 128 128
OUTLINECOLOR 0 0 0
NAAM "ZonaNULL"
EXPRESSION ([VALUE] = 0)
LABEL
HOEK AUTO
KLEUR 0 0 0
FONT sans
TYPE TRUETYPE
POSITIE cc
PARTIALEN ONWAAR
BUFFER 5
SIZE 6
OUTLINECOLOR 200 200 200
EINDE
END #class 0-waarde
KLASSE
SYMBOL 3
KLEUR 255 128 128
#COLOR -1 -1 -1 #SIN FILLING
.... en zo dicht bij
EINDE
END #Class Value
END # Layer
Concluderend
Daarom wordt het werken met mapserver, hoewel het vrij eenvoudig is, complex en zeer beperkt voor grote taken omdat alles in de .map staat. Het grootste nadeel is dat alles te voet wordt gedaan, zoals het definiëren van elke kleur in een thema, en daarom ontstaan er tools zoals CartoWeb, die werkt op Mapserver maar ingebouwde plug-ins en voorbeelden met kenmerken die deze primitieve versie eruit laten zien de readme eerst:
- Werk aparte frames, met AJAX om ze afzonderlijk te vernieuwen
- Parseer de code, zolang een script het .map opnieuw schrijft op basis van parametriabele criteria
- Dynamische back scrolling zonder vernieuwing te vragen, alsof het een flitslaag was
- Online vector bewerking, onmiddellijke cache schrijven
- Download laag in vectorvorm
- Exporteer naar Google Earth
- PDF genereren vanaf de implementatie
In een volgende zullen we CartoWeb bekijken, hier laat ik de link naar de belangrijkste voorbeelden.
Er is een manier om de standaard phtml template output te hebben, bedankt
Hallo,
Ik probeer een laag uit de .map te bellen, als volgt:
LAAG
NAME test_houses
TYPE PUNT
CONNECTIONTYPE OGR
VERBINDING #”virtual.ovf”
"
xxxxx
UITVOER …….
eess_id
wkbPoint
WGS84
"
Mijn probleem is dat de DSN-service problemen veroorzaakt: bij het aanvragen van GetCapabilities wordt het databasewachtwoord geretourneerd... kan ik een bestand oproepen om te voorkomen dat het wachtwoord wordt "weggegeven" of is het een DSN-fout???? Bedankt!
MapServer is een populaire Open Source-project waarvan het doel is om dynamische ruimtelijke kaarten over het internet te tonen. Een gemonteerde drive is een drive die is toegewezen aan een lege map op een volume dat het NTFS-bestandssysteem gebruikt. Gemonteerde schijven functioneren als elke andere schijf, maar worden toegewezen aan rijpaden in plaats van letters te schrijven.