MapInfo Nordic & Baltic Users Group

Expand all | Collapse all

Editering af GeoFA data via WFS-T i MapInfo Pro

  • 1.  Editering af GeoFA data via WFS-T i MapInfo Pro

    Posted 21 days ago
    Edited by Peter Horsbøll Møller 20 days ago
      |   view attached

    I sidste uge deltog jeg i et webinar arrangeret af Projektgruppe for friluftsdata under KL. Emnet var editering af data i Friluftsdatabasen under GeoFA  (Geografiske Fagdata i GeoDanmark) via WFS-T.

    I kan læse mere om GeoFA via deres hjemmeside under GeoDanmark. I kan også finde en række vejledninger på derse hjemmeside. Under vejledningerne finder i blandt andet også optagelser fra deres webinarer fra foråret 2021. Nederst i denne artikel kan I finde optagelsen fra webinaret om editering via WFS-T.

    Nedenfor følger en vejledning bygget på baggrund af min demonstration i webinaret.

    Åbne en WFS-T tabel fra GeoFA-tjenesten

    Første trin er at du skal åbne en WFS-T tabel fra WFS-tjenesten i MapInfo Pro. Du kan så efterfølgende tilføje og rette i data via denne WFS-T tabel.

    Jeg vælger at begrænse indholdet i WFS-T tabellen via mit aktive kortudsnit. Derfor starter jeg med at åbne et kort i MapInfo Pro og zoomer ind på mit interesseområde. Du kan også vælge at begrænse indholdet med andre atttributter fra databasen.


    Nu trykker jeg på Vektorkort (WFS) kommandoen fra Åbn-knappen på fanebladet Start.


    Dialogboksen Åbn WFS-tabel vises nu. Har du allerede tilføjet tjenesten til listen med servere, kan du springe over de næste trin og vælge tjenesten i listen WFS-server. Hvis ikke skal vi nu tilføje serveren. Tryk på knappen Servere....


    Dialogboksen Liste over WFS-servere indeholder alle de WFS-servere, som allerede er defineret. Mange af disse er MapInfo Pro født med. Andre må du selv tilføje efterhånden som du får behov for at anvende dem. Tryk på knappen Tilføj....


    I dialogboksen Oplysninger om WFS-server indsætter du URL'en for tjenesten. Denne URL finder du på hjemmesiden for GeoFA. Bemærk at der er tale om nærmest en personlig URL, eller i al fald en URL for hver organisation. Typisk vil din URL indeholde noget, der navngiver din organisation. I nedenstående tilfælde anvender jeg testtjenesten.

    Du kan teste tjenesten ved at trykke på knappen Test URL.... Du kan også hente tjenestens beskrivelse via knappen Hent beskrivelse. Du kan vælge at bruge denne beskrivelse eller selv navngive tjenesten. Det er beskrivelsen, som du ser i listen med WFS-servere.

    Hvis du skal editere data via denne tjeneste, er det vigtigt at du vælge Foretræk version 1.0. MapInfo Pro understøtter kun WFS-T, altså editering af data, via WFS 1.0.

    Tryk på OK for at gemme og tilføje tjenesten til listen med WFS-servere.


    I dialogboksen Liste med WFS-servere kan du nu markere den netop tilføjede WFS-server.

    Med knappen Angiv standard kan du angive at dette er den WFS-server, du ønsker MapInfo Pro skal vælge som standard, når du åbner Åbn WFS-tabel dialogboksen fremover.

    Tryk på OK for at komme tilbage til dialogboksen Åbn WFS-tabel.


    Nu har du fået tilføjet din nye WFS-server. Dette behøver du kun gøre en gang. Fremover vil den optræde på listen.

    I dialogboksen Åbn WFS-tabel vælger du nu det lag, som du ønsker at anvende. Lad os starte med Friluftsliv faciliteter, flader (5801).

    Efterfølgende kan du vælge at begrænse de data, du henter ned i din lokale WFS-tabel. Tryk på knappen Rækkefilter for at begrænse antallet af poster.


    I dialogboksen Rækkervælger kan du vælge et eller flere kriterier, som data skal opfylde for at blive hentet ned. I nedenstående tilfælde begrænser jeg posterne til at være indenfor mit aktuelle kortudsnit. Jeg vælge kolonnen geometri, operatoren ogc:BBOX og værdien CURRENT_MAPPER.

    Tryk OK for at acceptere dine valg.


    Tilbage i dialogboksen Åbn WFS-tabel kan jeg ændre den stil som dataenen vises med i MapInfo Pro via knapperne under Objektstil.

    Jeg tilpasser også navn og placering af den lokale tabel, som MapInfo Pro opretter. Efterfølgende vil kunne tilgå disse data ved at åbne denne tabel. Jeg behøver med andre ord ikke bruge Åbn WFS-tabel igen, når jeg først har skabt min lokale MapInfo-tabel.

    Endelig skal du huske at markere Tillad redigering, hvis du ønsker at kunne editere i data og tilføje nye poster via denne WFS-tabel. Er muligheden nedtonet, kan det skyldes at du ikke har fået angivet at tjenesten skal foretrække WFS 1.0, du du tilføjede WFS-serveren. Se ovenfor.

    Tryk OK for at oprette WFS-tabellen og hente data fra WFS-serveren.


    I mit kort kan jeg nu se de data, som blev hentet fra WFS-serveren. De er optegnet som røde polygoner uden udfyldning. Det var den stilart, jeg valgte da jeg åbnede WFS-tabellen.

    Via lagkontrollen kan jeg ændre stilartet for laget eller jeg kan tilføje en tematisering på laget og farvelægge det efter facilitetstypen (Facil_ty).

    Tilføje og opdatere poster

    Jeg gør nu laget redigerbart via Lagkontrollen og med Polygon-tegneværktøjet indtegner jeg en ny flade omkring Madum Sø, som jeg ønsker at indsætte i friluftsdatabasen.

    Jeg er også nødt til at opdatere attributterne på objektet, eftersom friluftsdatabasen stiller krav til en lang række af attributterne. Ofte består disse af et kodefelt og et tilhørende beskrivelsesfelt. Man behøver kun at opdatere kodefeltet. Beskrivelsesfeltet opdateres automatisk, når du opdaterer WFS-tabellen efter at have gemt dine ændringer.

    For at sikre mig at jeg får opdateret de nødvendige felter, har jeg lavet et lidt Mapbasic-skript. Skriptet beder brugeren om at vælge nogle få udvalgte værdier fra lister med værdier og opdaterer efterfølgende den valgte post med disse værdier.

    Skriptet har også nogle værdier, som er hårdtkodet. Disse bør selvfølgelig tilpasses eller bygges ind i input dialogboksen på lige fod med de andre værdier.

    Jeg vælger mit skript fra SQL-knappen.


    Herefter bliver jeg bedt om at vælge de korrekte værdier. Dialogboksen læser værdierne fra den valgte post og præsenterer brugeren for disse. På denne måde kan skriptet også anvendes til at ændre eksisterende værdier.


    Når jeg trykker på OK-knappen opdateres den valgte post. Skriptet vil også opdatere flere poster, hvis der er valgt flere poster. Men det vil jegikke anbefale at man gør, da det overskriver alle felter på posterne med værdierne man indtaster og vælger i dialogboksen.

    Nu er det tid til at gemme ændringerne. Når du gemmer ændringerne i din tabel, overføres disse automatisk til WFS-tjenesten. Tryk på Gem Tabel eller brug Ctrl+S og vælg den tabel, som du ønsker at gemme.

    Når MapInfo Pro nu forsøger at overføre ændringerne til WFS-tjenesten bliver du bedt om at angive dit brugernavn og kodeord. Disse er selvfølgelig personlige for dig. Du kan sætte flueben i Remember my password for nemmere at kunne logge på næste gang. Jeg har en engelsk Windows. Har du en dansk, vil spørgsmålet blive stillet på dansk.


    Når værdierne overføres til WFS-tjenesten, forsøges de indsat i databasen. I den forbindelse kan det ske at værdierne afvises af databasen, måske fordi du har anvendt en kode, som databasen ikke kender. I disse tilfælde vil du se en fejl, som på sin egen kryptiske måde forsøger at fortælle dig hvad du har gjort forkert. Fejlen er skabt af databasen på WFS-serveren og man kan ved at læse den godt få en ide om hvor fejlen er opstår.

    Her er et eksempel på en fejl. Under Detail kan du se at databasen forsøger at fortælle dig at Key (postnr) = (0) is not present .... Det kan du oversætte med at værdien 0 i kolonnen postnr ikke er tilladt. Du skal altså indtaste et gyldigt postnr.

    Det er dette overstående skript kan hjælpe dig med at håndtere.


    Når ændringerne er gennemført, vil MapInfo Pro spørge dig om du ønsker at opdatere din lokale WFS-tabel. Det vil jeg anbefale at du gør. Dermed får du opdateret beskrivelsesfelterne for de poster, du netop har tilføjet. Du får også hentet poster som er blevet oprettet af andre brugere.


    Du kan også til en hver tid manuelt opdatere WFS-tabellen. Det gør du nemmest via Tabellisten i Stifinder vinduet. Hold musen over den tabel, du ønsker at opdatere, og tryk så på knappen Opdater tabel, som dukker op.


    Har du flere WFS-tabeller, som du ønsker at opdatere på samme tid, kan du bruge Opdater WFS-tabel  fra Webtjenester på fanebladet Tabel. Her bliver du bedt om at vælge hvilke tabeller, du ønsker at opdatere. Det gør det nemt at opdatere flere på en gang. Du kan også tilgå denne kommando via Alt + F5.

    Mulige udfordringer

    Der er visse ting, som kan resultere i nogle "udfordringer".

    Det første du bør være opmærksom på er at friluftsdatabasen har feltet som er desginet til at indeholde tekster længere end 254 tegn. Det vil give problemer i MapInfo Pro, da programmet ikke understøtter dette. Umiddelbart tolker MapInfo Pro længderne på teksterne, når de hentes fra tjensten og laver felterne længde til at passe til disse.

    Anvender du ikke tekster, der er længere end 254 tegn vil du derfor ikke opleve problemer.

    Vi er endnu ikke helt klar over hvordan MapInfo Pro opfører sig, når et felt er nødt til at blive længere end 254 tegn. Forhåbentlig skrivebskytter MapInfo Pro feltet og forhindrer dig dermed i at opdatere feltet med en kortere tekst.

    Opdateringsskriptet

    Som omtalt ovenfor anvender jeg et skript til at prompte brugere for input og efterfølgende opdatere den valgte post. Dette skript kræver at du har MapInfo Pro v2019.3 for at det virker.

    Jeg har vedhæftet skriptet i en zip-fil nedenfor.

    Vær dog opmærksom på at det kræver yderligere tilpasning for at fungere med alle felter i databasen. På nuværende tidspunkt opdateres flere af felterne med hådtkodede værdier.

    Her kan du se opdateringskommandoen, så du har en ide om hvilke værdier der indsættes.
    Update sQuery
      Set Navn = sNavn,
      facil_ty_k = Val(sFacil_ty),
      facil_ty = Mid$(sFacil_ty, InStr(1, sFacil_ty, " ")+1, 254),
      Ansva_v_k = Val(sAnsva_v),
      Ansva_v = Mid$(sAnsva_v, InStr(1, sAnsva_v, " ")+1, 254),
      oprindkode = Val(sOprind),
      oprindelse = Mid$(sOprind, InStr(1, sOprind, " ")+1, 254),
      Bruger_ID = "PHM",
      cvr_kode = 33157274,
      temakode = 5801,
      statuskode = 3,
      off_kode = 1,
      saeson_k = 1, handicap_k = 3, doegnaab_k = 1,
      vandhane_k = 0, betaling_k = 0, book_k = 0,
      postnr = 9510, kommunekode = 846, vejkode = 0


    Du kan tilpasse disse til dit formål. Og du kan også tilpasse skriptet, så flere at værdierne præsenteres som valglister i dialogboksen. Det er felterne efter Bruger_ID der er hårdkodede i ovenstående opdateringskommando.

    Tilsvarende er denne opdateringsrutine lavet til fladerne i friluftsdatabasen. Punkter og linjer kan tænkes at have andre/flere/færre felter, der skal opdateres.

    Her er optagelsen af webinaret om editering af data via WFS-T. MapInfo Pro delen starter ca. 45 minutter inde.



    ------------------------------
    Peter Horsbøll Møller
    Principal Presales Consultant | Distinguished Engineer
    Precisely | Trust in Data
    ------------------------------

    Attachment(s)



  • 2.  RE: Editering af GeoFA data via WFS-T i MapInfo Pro

    Posted 21 days ago
    Intet mindre end verdens længste "korte vejledning" :-)

    ------------------------------
    Uffe Kousgaard
    ROUTEWARE
    Roskilde
    ------------------------------



  • 3.  RE: Editering af GeoFA data via WFS-T i MapInfo Pro

    Posted 20 days ago
    Du har ret, Uffe :-)

    Jeg har nu fjernet "korte" fra teksten og indsat optagelsen fra webinaret. Så kan man se vejledningen i stedet for at læse den.

    Der er oså tilføjet lidt henvisninger til GeoFA's hjemmeside under KL.

    ------------------------------
    Peter Horsbøll Møller
    Principal Presales Consultant | Distinguished Engineer
    Precisely | Trust in Data
    ------------------------------