GeoCad modul GeoDB I GeoCAD er det muligt at koble relationsdatabase til GeoEDIT. Her igennem er det muligt at lagre forskellige oplysninger i databasen og koble disse oplysninger til objekter i kortet. Der kan foretages forespørgsler i databasen og de udvalgte data kan vises i kortet med multifind. Omvendt kan man udvælge data i kortet og få dem vist i databasen. Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB. Denne note gennemgår opsætning og anvendelse af GeoDB med eksempel i en kobling mellem matrikelkort og matrikelregister. Noten er udarbejdet med inspiration fra Morten Ørtved, Landinspektørfirmaet Nellemann m.fl. i Ålborg. 1. Krav til kort og registerdata Ved anvendelse af GeoDB benytter man 2 typer af data: kortdata, f.eks. matrikelkort eller grundkort registerdata, f.eks. matrikelregister eller BBR På hele datamarkedet sker der p.t. en liberalisering og man kan forvente at antallet af potentielle data stiger bl.a. indenfor ejendoms- og bygningsområdet. Kortdata skal evt. konverteres således, at de kan indlæses i GeoCAD. Registerdata skal indlæses i en relationsdatabase, f.eks. Microsoft Access. Hvis de er placeret i såkaldte kommaseparerede filer, findes der en række værktøjer i Access, som kan lette indlæsningen. For at kort og registre kan kobles sammen skal der være en relation imellem dem. En oplagt relation mellem matrikelkort og -register er matrikelnummeret med til hørende ejerlavskode. Uanset hvilke data man arbejder med er det vigtigt på forhånd at kende mulige relationer mellem kort og registre og her igennem vurdere, hvorvidt det er tilstrækkeligt til at løse en bestemt opgave. 2. Opsætning af kodetabeller For at kunne anvende GeoDB skal der foretages en række tilføjelser i kodetabellerne til GeoEDIT. Der er 2 typer af tilføjelser til kodetabellerne og de omfatter følgende nye parametre: FM tilføjes de objektkoder som skal anvendes som relation til databasen GeoDB 1
DM tilføjes de objektkoder som kan danne flader For at kunne knytte matrikelregisteret sammen med matrikelkortet benyttes matrikelnummeret. Derfor skal matrikelnummeret i kodetabellen tildeles parameteren FM. Angivelsen af flademasker bruger GeoEDIT til at vise fladen, som er tilknyttet et punkt. Eksempel på FM Master Matrikelnummer obj pen kode : : : : : : : : : t1 C040 17 1 5 2 1 d1 1.0 1.0 lc C040 0 fm C040 2 dp C04020000 20000 8000 st C040 51 Ma matr.nr. I ovenstående eksempel er objektkoden C040 tildelt flademaske 2. Flademasken viser, hvilke flader, som er sammenknyttet med matrikelnummeret. I matrikelkortet vil det være skellene. Derfor skal alle skel tildeles parameteren DM. Eksempel på DM Skel vej og gadejord obj pen kode : : : : : : : : : li A000 5 1 2 1 1 1.6 s1 A000 5 102 16 2 2 1 1.0 dm A000 2 lc A000 10 st A000 60 Skel vej I nedenstående eksempel er der foretaget en søgning på et ejendomsnummer i databasen. Til det valgte ejendomsnummer er der 2 lodder. Søgningen vises i kortet ved at markere relationen med multifind (matrikelnumrene) og udfra definitionen i kodetabellen fladeudfyldes de pågældende lodder. Af andre eksempler på sammenhæng mellem FM og DM kan f.eks. nævnes sammenhæng mellem adresse (husnummer/vejkode) og bygninger. En søgning på adresse i databasen vil medføre multifind markering af husnummeret i kortet og fladeudfyldning af bygningen. Bemærk at både GeoDB og GeoEDIT skal være startet før de kan anvendes sammen. 3. Opsætning af GeoDB GeoDB 2
Når kort- og registerdata er forberedte skal der etableres en såkaldt ODBC forbindelse. Denne forbindelse benytter GeoDB til kommunikation mellem databasen og GeoEDIT. Under kontrolpanelet er der adgang til en opsætning af ODBC. Eksisterer den ikke skal den installeres fra Windows CDén. Efter ODBC administratoren er startet fremkommer et vindue, som vist herunder. Først undersøges det om computeren har adgang til en korrekt driver. Ved anvendelse af ACCESS benyttes en Microsoft Access driver. Eksisterer den ikke skal den installeres fra CDén med databaseprogrammet. For at tilføje en ny ODBC forbindelse trykkes herefter på Add og et nyt vindue vises. Først angives et Data Source Name, som er et unikt logisk (teknisk term) navn, som senere skal anvendes af GeoDB. Herefter angives evt. en sigende beskrivelse under Description. Til sidst angives navn og placering for databasen ved tryk på Select. Der kan foretages yderligere indstillinger, f.eks. anvdelse af password, men de ovennævnte er tilstrækkelige. Under User DSN i det første vindue vil navnet på den nye forbindelse vises. Denne opsætning skal kun foretages en gang. Bemærk at det er muligt at benytte flere ODBC forbindelser, hvis det er nødvendigt, f.eks. ved anvendelse af flere forskellige databaser. GeoDB startes (C:\GeoCAD\PGM\GEODB\GeoDB.exe) og nedenstående vindue vises. GeoDB 3
Herefter etableres et nyt såkaldt workspace (arbejdsområde) under File og det næste vindue vises. Først indtastes navnet på workspace under Name. Her indtastes et vilkårligt navn, som identifikation af arbejdsområdet. Derefter angives stinavnet for det fysiske arbejdsområde. I denne fil lagres bl.a. de brugerdefinerede SQL-forespørgsler, se senere. Endelig trykkes på Db og et nyt vindue vises. Her indtastes først en overskrift under Name, som identifikation af databasen - navnet er vilkårligt. Derefter angives ODBC forbindelsen under URL, som indtastes således: jdbc:odbc:aalborg, hvor ODBC er det logiske navn er aalborg. Hvis man vil kontrollere at database forbindelsen er iorden trykkes på Connect to database, hvorefter der udskrives en bekræftelse i vinduet. GeoDB 4
Til enhver database høre et eller flere såkaldte views. Et view er en udvælgelse af bestemte tabeller fra databasen. Definitionen af et view startes med et tryk på knappen View. I nedenstående eksempel er alle tabeller fra databasen valg. Til ethvert view hører en såkaldt query (forespørgsel). En query er en forespørgsel, som resultat viser de data, som opfylder forespørgelseskriterierne. Disse kriterier angives i en såkaldt SQL forespørgsel, som har en bestemt notation. GeoDB 5
I ovenstående vindue er først angivet følgende: Name : navn på query Where : SQL forespørgsel Order by : resultat af søgning sorteres efter det angivede feltnavn Ved at benytte ` ` angiver man, at feltet Ejd_nr er et tekstfelt. Ved angivelse af SQL forespørgsel kan man også anvende <,>, AND og OR. Herefter angives et såkaldt mode. Når resultatet skal vises på kortet benyttes kort eller lang tekst eller dem begge. Mode har følgende betydning: Key 1 : kort tekst Key 2 : lang tekst Both : både kort og lang tekst Color angivelse af farve for fladeudfyldning Den korte og lange tekst af objekter i kortet modsvares af felter i en eller flere tabeller i databasen. Under hhv. Key 1: og Key 2: indtastes de korrekte feltnavne. I eksemplet er det angivet, at der skal søges på den lange tekst i kortet og denne tekst modsvares feltnavnet Matr_nr i tabellen. Når forespørgsel mv. er klar gennemføres forespørgslen ved tryk på knappen Execute og resultatet vises nedenunder. Herefter kan resultatet vises i GeoEDIT ved tryk på knappen Show on map. Ved tryk på knappen Show on map markeres alle fundne relationer i kortet med multifind. Endvidere fladeudfyldes de tilhørende flader med farven angivet under Color. 4. Forespørgsler i GeoEDIT Samtlige forespørgsler i databasen med mulighed for markering i kortdata, kontrolleres af GeoDB. Fremfinding af poster i databasen udfra kortdata foretages derimod i GeoEDIT. GeoDB 6
De data som skal findes i databasen, kan findes på forskellige måder: find punkt med søgning på kort og/eller lang tekst anvendelse af multifind med søgning på kort og/eller lang tekst anvendelse af polygon og multifind med søgning på kort og/eller lang tekst Når de relevante data på en af de ovennævnte måder er markeret i GeoEDIT gennemføres forespørgslen i databasen med en af søgefunktionerne under DIV (menu mangler) i hovedmenuen. I det øjeblik forespørgslen gennemføres er det vigtigt, at man i GeoDB befinder sig i et view, som relaterer sig til forespørgslen. Dvs. hvis en forespørgsel foretages pga. lang tekst er det nødvendigt, at det aktuelle view benytter lang tekst, som relation til kortet. Resultatet af forespørgslen vises på fuldstændig på samme måde, som hvis forespørgslen var foretaget med SQL i GeoDB. Når de relevante data på en af de ovennævnte måder er markeret i GeoEDIT gennemføres forespørgslen i databasen med en af søgefunktionerne under DIV (menu mangler) i hovedmenuen. I det øjeblik forespørgslen gennemføres er det vigtigt, at man i GeoDB befinder sig i et view, som relaterer sig til forespørgslen. Dvs. hvis en forespørgsel foretages pga. lang tekst er det nødvendigt, at det aktuelle view benytter lang tekst, som relation til kortet. Resultatet af forespørgslen vises på fuldstændig på samme måde, som hvis forespørgslen var foretaget med SQL i GeoDB. GeoDB 7
GeoDB 8