166
MapInfo Professional 12.0 SQL Server 2008R2 / 2012 (Express) Peter Horsbøll Møller, Senior Systems Engineer November 2013

MapInfo Pro og SQL Server - Uden opgaver

Embed Size (px)

Citation preview

Page 1: MapInfo Pro og SQL Server - Uden opgaver

MapInfo Professional 12.0

SQL Server 2008R2 / 2012 (Express)

Peter Horsbøll Møller, Senior Systems Engineer

November 2013

Page 2: MapInfo Pro og SQL Server - Uden opgaver

Dagsorden - 1

Opsætning af en spatial database så

den kan anvendes fra MapInfo

Professional 12.0

SQL Server 2008R2 / 2012 Express

Kan være enhver spatial database

Kan være MapInfo Pro 10.0 - 12.0

Page 3: MapInfo Pro og SQL Server - Uden opgaver

Dagsorden - 2

Anvende en spatial database fra

MapInfo Professional 12.0

SQL Server 2008R2 / 2012 Express

Kan være enhver spatial database

Kan være MapInfo Pro 10.0 - 12.0

Page 4: MapInfo Pro og SQL Server - Uden opgaver

Dagsorden - 3

• Vi kommer omkring:

– Oprettelse af databaser, login og brugere

– Oprettelser af tabeller

– Oprettelse af ODBC datakilder

– MapInfos kortkatalog

– Åbning af DBMS tabeller fra MapInfo Professional

– Upload af tabeller til SQL Server

– Editering af tabeller fra MapInfo Professional

– Oprettelse af views

– De spatiale objekter og funktioner i SQL Server

– Oprettelse af Triggers

– Anvendelse af MapBasic mod SQL Server

• Hvis I har konkrete emner, som I ønsker berørt, så giv mig et praj

Page 5: MapInfo Pro og SQL Server - Uden opgaver

Forudsætninger

• MapInfo Professional 10, 10.5, 11.0, 11.5 eller 12.0.

– 12.0.2 er anbefalet

• MS SQL Server 2008 R2 eller 2012 Express with tools

– Kan hentes her:

2008: www.microsoft.com/en-us/download/details.aspx?id=23650

2012: www.microsoft.com/en-us/download/details.aspx?id=29062

– Vi skal bruge SQL Server Management Studio

– Brugerrettigheder til at oprette nye databaser, logins og brugere

• kræver enten et SA-login

• eller Administrative rettigheder lokalt på computeren

Page 6: MapInfo Pro og SQL Server - Uden opgaver

Introduktion

• Navn og organisation

• Forudsætninger:

– Kendskab til MapInfo Professional

– Kendskab til databaser/SQL Server

– Kenskab til SQL

• Ønsker til denne workshop?

Page 7: MapInfo Pro og SQL Server - Uden opgaver

DAG 1

Page 8: MapInfo Pro og SQL Server - Uden opgaver

SQL Server Management Studio

Page 9: MapInfo Pro og SQL Server - Uden opgaver

Log in på Management konsollen

• Windows Autentication eller ”enhver” SQL Server login

• Men vi har brug for visse rettigheder for at kunne oprette en database

Page 10: MapInfo Pro og SQL Server - Uden opgaver

Søge efter en SQL Server instans

• Hvis du ikke kan se din SQL Server

Express instans i listen, kan det

være fordi din SQL Server Browser

service ikke kører på din compter

(eller den computer SQL Server er

installeret på)

• Gå til (Windows) Tjenester og start

SQL Server Browser tjenesten

• Vær opmærksom på at du evt. skal

aktivere tjenesten via Egenskaber

på tjenesten

Page 11: MapInfo Pro og SQL Server - Uden opgaver

Server autentifikation

• Højreklik på database-serveren og vælg Properties

• Vælg Security

• Vælg SQL Server and Windows Authentication mode

Page 12: MapInfo Pro og SQL Server - Uden opgaver

Oprette databaser, login og brugere

Page 13: MapInfo Pro og SQL Server - Uden opgaver

Oprette en database

• Højreklik for at oprette en ny

– Option: ”Quoted Identifiers” sættes til ”On”

Page 14: MapInfo Pro og SQL Server - Uden opgaver

Oprette et login og en bruger

• Højreklik for at oprette et nyt login (Security på serveren, ikke på

databasen

Page 15: MapInfo Pro og SQL Server - Uden opgaver

Oprette et login og en bruger – General

• Login navn, Kodeord, Standard database

• Login kan også være brugerens Windows brugernavn

Page 16: MapInfo Pro og SQL Server - Uden opgaver

Oprette et login og en bruger – Server Roles

• Angiv rolle(r) på database-serveren – ofte kun ”public”

• Læs mere: http://msdn.microsoft.com/en-us/library/ms188659.aspx

Page 17: MapInfo Pro og SQL Server - Uden opgaver

Oprette et login og en bruger – User Mapping

• Tilknyt til en (ny) bruger i en database og vælg database rolle(r)

• Læs mere: http://msdn.microsoft.com/en-us/library/ms189121.aspx

Page 18: MapInfo Pro og SQL Server - Uden opgaver

Oprette et login og en bruger - Status

• Muligt at ”slukke” for adgang på et senere tidspunkt

Page 19: MapInfo Pro og SQL Server - Uden opgaver

Oprette schemas

Page 20: MapInfo Pro og SQL Server - Uden opgaver

Hvad er et schema i SQL Server?

• Et schema i SQL Server er en måde at organisere bl.a sine tabeller

• Med schemaer kan man også nemt tildele rettigheder til en række

tabeller, nemlig ved at tildele rettigheder via schemaet i stedet for

direkte på tabellerne

• Schemaer kan være en anden måde at organisere data end via flere

databaser

• Når man tilgår databasen fra MapInfo Professional kan man øverst i

Åbn dialogboksen vælge hvilket schema, man ønsker at se. På denne

måde kan man begrænse det antal tabeller man ser i vinduet med

tabeller.

• OBS: Vær opmærksom på at der skal findes mindst én tabel i schemaet

for at man kan se det fra MapInfo Professional. Det gælder også hvis

man ønsker at bruge Gem kopi som til at gemme tabeller over i

schemaet

Page 21: MapInfo Pro og SQL Server - Uden opgaver

Oprette et nyt schema

• Højreklik på mappen Schemas i mappen Security under den database,

du ønsker at oprette schemaet i

• Vælg New Schema...

• Angiv et navn og en ejer

• Sæt evt. også rettigheder

Page 22: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller

Page 23: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller

• Højreklik på folderen Tables under din database

• Vælg New Table…

Page 24: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – tilføje kolonner

• Skriv navnet på kolonnen og vælg den passende kolonnetype for hver

kolonne. Overvej om man må indsætte NULL-værdier

Page 25: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – Properties vinduet

• Mange indstillinger for en ny tabel kan også sætte via Properties

vinduet (Åbn det evt. ved at trykke på F4)

• Du kan her bl.a. sætte:

– Tabellens navn

– Tabellens schema

– Identity kolonnen

Page 26: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – datatyper

• Præcise numeriske

– Bigint (MapInfo type: Float)

• -9.223.372.036.854.775.808 – 9.223.372.036.854.775.807

– Int (MapInfo type: Integer)

• -2.147.483.648 – 2.147.483.647

– SmallInt (MapInfo type: SmallInt)

• -32.768 – 32.767

– TinyInt (MapInfo type: SmallInt)

• 0 – 255

– Bit (MapInfo type: Logical)

• 1 or 0

– Decimal / numerical (MapInfo type: Decimal)

• -10^38 +1 – 10^38 –1

Page 27: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – datatyper

• Tilnærmede numeriske værdier

– Float (MapInfo type: Float)

– Real (MapInfo type: Float)

• Dato og tid

– Datetime (MapInfo type: Datetime)

• Fra 1. januar 1753 til 31. december 9999 med en præcision på

trehundrededele sekund eller 3,33 milisekund

– Date (MapInfo type: Date)

• Fra 1. januar år 1 til 31. december år 9999

Page 28: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – datatyper

• Tekster

– Char (MapInfo type: Char)

• Fastlængde ikke-Unicode data, max. 8.000 tegn

– VarChar (MapInfo type: Char)

• Variabellængde ikke-Unicode data, max. 8.000 tegn

– Text (MapInfo type: Char)

• Variabellængde ikke-Unicode data, max. 2.147.483.647 tegn

• Bemærk: Tekstkolonner større end 254 tegn vil være skrivebeskyttet, når

de åbnes i MapInfo Professional og de vil kun vise de første 254 tegn

Page 29: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – datatyper

• Geografiske typer

– Geometry (MapInfo type: Object)

• Kræver at tabellen er registreret i kortkatalog for at MapInfo kan

”se” den, mere om dette senere

– Geography (MapInfo type: Object)

• Kræver at tabellen er registreret i kortkatalog for at MapInfo kan

”se” den, mere om dette senere

Page 30: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – overvejelser

• Undgå unicode kolonnetyperne (nchar, nvarchar, ntext), da MapInfo

Professional ikke kan redigere disse

• Undgå at oprette tekst-kolonne større end 254 tegn, da MapInfo

Professional ikke kan redigere disse

• Overvej at navngiv din primære indeks kolonne MI_PRINX. MapInfo

Professional bruger nemlig dette som den primære indeks kolonne i

views.

• Overvej at anvende Identity kolonner i dine tabeller for den primære

indeks kolonne. Dette opdaterer automatisk værdien ved indsættelse af

nye poster (svarer til ”autonummer” i MS Access)

Page 31: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – Primær nøgle

• Højreklik på kolonne som skal være den primære nøgle, vælg Set

Primary Key

Page 32: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – Identity

• Automatisk

nummering

• Vælg kolonnen og sæt

Is Identity til yes

• Du kan angive

specifikke tilvækst

(increment) og

startværdi (seed)

Page 33: MapInfo Pro og SQL Server - Uden opgaver

Gennemse data i tabeller

• Højreklik på den ønskede tabel og vælg

– enten Select Top 100 Rows

– eller Edit Top 200 Rows

• Værdier kan tilpasses via Tools > Options > SQL Server Object

Explorer

Page 34: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller - navngivning

• Overvej kun at anvende bogstaverne A – Z, numrene 0 – 9 og

understregning (_) ved navngivning af tabeller og kolonner

• SQL Server understøtter dog nationale tegn, mellemrum og andre

specialtegn.

• SQL Server har også en række ord, som man ikke må bruge som f.eks.

tabel- og kolonnenavne, f.eks. BY og PLAN. Se en komplet liste over

reserverede ord her:

– http://technet.microsoft.com/en-us/library/ms189822.aspx

• Skal tabellerne anvendes i MapInfo Professional anbefales det at holde

tabelnavnene under 31 tegn, da det er MapInfo’s begrænsning på tabel-

og kolonnenavne

• Bemærk også at kolonner til tabel- og kolonnenavne i kortkataloget er

begrænset til 32 tegn. Anvender I længere tabel-/kolonnenavne skal

disse ændres.

Page 35: MapInfo Pro og SQL Server - Uden opgaver

Oprette tabeller – et par tips

• Du kan kopiere strukturen, eller dele heraf, fra en tabel til en anden ved

at:

– markere de kolonnenavne og -typer, du ønsker at kopiere, i Design

Mode.

– trykke på Ctrl+C for at kopiere dem

– Gå over i Design Mode for den anden tabel og tryk i det øverst

venstre felt

– tryk Ctrl+V for at indsætte de kopierede kolonner

• Du kan også skripte Create kommandoen for en tabel over i et ”Query”

vindue. Du kan så tilpasse denne kommando, f.eks. Tabelnavne, tilføje

flere kolonner og endelig udføre kommandoen. Dette vil oprette en ny

tabel med en struktur lig med – eller delvis lig med – den originale tabel.

• Hvis du ikke kan ændre kolonnetypen, skal du sikre dig at du har slået

dette fra: Prevent saving changes that require table re-creation – mere

om dette under Tips & Tricks på de sidste sider

Page 36: MapInfo Pro og SQL Server - Uden opgaver

Oprette en ODBC-datakilde

Data

Data

Page 37: MapInfo Pro og SQL Server - Uden opgaver

Oprette en datakilde

• Åbn Select Data Source. Kan tilgås fra Åbn

dialogboksen eller via Filer > Åbn DBMS-

tilslutning.

• Vælg datakildetype

– Filbaseret datakilde

– Maskindatakilde

• Klik på knappen Ny.../New…

• Vælg den ønskede drivertype/databasetype

• Angiv et navn eller filnavn

• Datakilden bliver nu oprettet

Page 38: MapInfo Pro og SQL Server - Uden opgaver

Konfigurere en datakilde

• Afhængig af database/driver

MS Access

MS SQL Server

Page 39: MapInfo Pro og SQL Server - Uden opgaver

Oprette en datakilde til SQL Server 2008/2012

• Åbn Select Data Source. Kan tilgås fra

Åbn dialogboksen eller via Filer > Åbn

DBMS-tilslutning.

• Vælg datakildetype

– Filbaseret datakilde

– Maskindatakilde

• Klik på knappen Ny.../New…

• Vælg Bruger- eller Systemdatakilde

• Vælg drivertype/databasetype:

– SQL Server Native Client 10.0 (2008)

– SQL Server Native Client 11.0 (2012)

• Datakilden bliver nu oprettet

Page 40: MapInfo Pro og SQL Server - Uden opgaver

Konfiguration af SQL Server 2008 datakilde

• Indtast navn, beskrivelse og server

• Vælg logintype (ofte Windows

Authentication) og indtast brugernavn

og kodeord, hvis du valgte SQL Server

Authentication

• Angiv standard database – altid!

• Brug ”ANSI Quoted Identifiers”

• Andre indstillinger

• Afprøv datakilden

Page 41: MapInfo Pro og SQL Server - Uden opgaver

Åbne en DBMS-tilslutning

• Kan gøres via Filer > Åbn, Åbn DBMS-

tilslutning eller via Filer > Åbn DBMS-

tilslutning

• Når du har valgt tilslutningn og skal

indtaste dine login-informationer i SQL

Server Login dialogboksen, kan du også

vælge en anden database

• Klik på knappen Options >> for at se flere

indstillinger

• Vælg en anden database hvis du ønsker

det

Page 42: MapInfo Pro og SQL Server - Uden opgaver

ODBC-datakilder på 64 bit operativsystem

• Tilgår du Datakilder via kontrolpanelet: Administrative værktøjer >

Datakilder (ODBC) kan du på et 64 bit operativsystem komme til at se

på 64bit datakilder

• MapInfo Professional 12.0 er et 32 bit program og anvender derfor også

32 bit datakilder.

• Højreklik på ”Datakilder (ODBC)” og vælg

Egenskaber, så får du denne dialogboks

• Target/Destination bestemmer om du ser 32

bit eller 64 bit datakilder:

• 32 bit:

• %windir%\system32\odbcad32.exe

• 64 bit:

• %windir%\SysWoW64\odbcad32.exe

• Læs mere:

• http://support.microsoft.com/kb/942976

Page 43: MapInfo Pro og SQL Server - Uden opgaver

MARS

• Multiple Active Result Sets (MARS) – flere aktive resultatsæt

• Understøttet af

– MapInfo Professional 10.5.2 og nyere

– SQLServer 2005, 2008 og 2012

• MapInfo Professional 10.5.2 og nyere (den danske version dog først fra

v11.0) tilføjer automatisk denne indstillinger til tilslutningn:

– “MARS Connection=true”

• Forbedret performance ved åbning af en tabel, især for Direkte med

Cache. Adgangen kan være 5-10 gange hurtigere.

• Det er ikke nemt at tilføje denne indstillinger til en ODBC-datakilde, da

forskellige programmer kan bruge den samme datakilde og ikke alle

programmer understøtter MARS.

• Du kan dog tilføje denne indstilling via Registreringsdatabasen eller fil-

datakilden, se næste side

Page 44: MapInfo Pro og SQL Server - Uden opgaver

MARS på datakilden

• Anvender du en dansk udgave af MapInfo Professional 10.5.2 kan med

fordel aktivere MARS direkte på datakilden

• I en filbaseret datakilde åbnes datakilden i en tekstfil og linjen

”MARS_Connection=Yes” tilføjes

• I en maskin-datakilde tilføjes nøglen

”MARS_Connection” af typen

Streng/Tekst til datakilden via

regedit. Nøglens værdi sættes til

”Yes”

• OBS: Brug ikke denne

fremgangsmåde hvis

andre programmer

anvender samme

datakilde

Page 45: MapInfo Pro og SQL Server - Uden opgaver

MapInfo Pro: DBMS-grundindstillinger

• Åbn tilslutning under opstart

• Tabel-projektionen

anvendes også når du gør

en DBMS-tabel

kortlægningsklar

• Standard placering af eksterne tabeller

Page 46: MapInfo Pro og SQL Server - Uden opgaver

MapInfo’s kortkatalog: MapInfo_MapCatalog

Page 47: MapInfo Pro og SQL Server - Uden opgaver

Kortkataloget

• Kortkataloget (MapInfo.MapInfo_MapCatalog) beskriver geografiske

tabeller i en database med værdier som:

– Type af spatial tabel, for eksempel XY, SpatialWare, Oracle, SQL

Server, PostgreSQL/PostGIS, mm.

– Koordinatsystem

– Dataafgrænsninger

– Symbol, standard og rækkevis

– Standardvisning

• Kortkatalog skal findes én gang i en

database med geografiske data, som

skal tilgås fra MapInfo Professional

Page 48: MapInfo Pro og SQL Server - Uden opgaver

Kortkatalog – Spatialtype

• Dataopbevaring/database

– 1 : MapInfo Code, XY med MapInfo-indeks( 3 kolonner)

– 4 : XY gemt i to kolonner

– 13: Oracle Spatial

– 14: MapInfo SpatialWare for MS SQL Server

– 17: SQL Server 2008 Geometry

– 18: SQL Server 2008 Geography

– 19: PostgreSQL/PostGIS

• Objekttyper

– .0: Kun punkter

– .1: Kun linjer/polylinjer

– .2: Kun regioner/polygoner

– .3: Alle objekttyper

Page 49: MapInfo Pro og SQL Server - Uden opgaver

Oprette kortkataloget

• Du kan også oprette kortkataloget

– Med EasyLoader (MapBasic værktøj)

– Med DBMS Catalog (MapBasic værktøj)

– direkte i databasen, manuelt via brugerfladen

– direkte i databasen, via SQL

• Brugeren der opretter kortkataloget har brug for en ”sysadmin”

serverrolle.

• Hvis du opretter kortkataloget med EasyLoader skal du sikre dig at alle

tilslutninger til databasen er lukket i MapInfo Professional. Ellers kan du

risikere at have problemer med rækkevis-stil, når du senere vil gøre en

DBMS-tabel kortlægningsklar.

Page 50: MapInfo Pro og SQL Server - Uden opgaver

Oprette kortkataloget – EasyLoader

• Start EasyLoader fra Værktøjsstyringen

• Kør EasyLoader fra Værktøjsmenuen

• Åbn en tilslutning til databasen via ODBC-

knappen. Du skal have DBA-rettigheder

• Tryk på Kortkatalog-knappen for at

oprette kortkataloget

• Du skulle nu gerne få at vide at

kortkataloget er blevet oprettet

• Hvis kortkataloget allerede findes, vil du

se en liste med tabeller allerede

registreret i kortkataloget. Du vil kunne

fjerne en eller flere af disse, hvis du

ønsker det

Page 51: MapInfo Pro og SQL Server - Uden opgaver

Oprette kortkataloget – DBMS Katalog

• Kør værktøjet DBMS Katalog fra Værktøjer >

Værktøjsstyring.

• Vælg Værktøjer > DBMS Katalog > DBMS

Katalog og tryk på Opret katalog.

• Vælg datakilden, som peger på databasen,

hvos du ønsker at oprette kortkataloget – du

skal have DBA-rettigheder

• Kortkataloget vil nu findes i databasen

Page 52: MapInfo Pro og SQL Server - Uden opgaver

Gøre en DBMS-tabel kortlægningsklar

Page 53: MapInfo Pro og SQL Server - Uden opgaver

Gøre en DBMS-tabel kortlægningsklar

• Dette vil tilføje en post til kortkatalog, som beskriver hvorledes MapInfo

Professional skal vise den pågældende tabel i et kort

• Du skal angive hvor de geografiske data skal læses, hvilket

koordinatsystem, du ønsker at bruge og hvilken stil de geografiske data

skal vises med når de vises i MapInfo Professional

Page 54: MapInfo Pro og SQL Server - Uden opgaver

Vælg database og tabel

• Vælg Tabel > Juster > Gør DBMS-tabel kortlægningsklar

• Du kan vælge en allerede åben DBMS-tilslutning via listen med Filtyper eller åbne en ny tilslutning via knappen Åbn DBMS-tilslutning i øverste højre hjørne af dialogboksen

• Vælg den tabel, som du ønsker at gøre kortlægningsklar og tryk på Åbn

• Bemærk at du kun ser de tabeller, som ikke allerede er registreret i kortkataloget

Page 55: MapInfo Pro og SQL Server - Uden opgaver

Indstillinger for den kortlægningsklare tabel

• Angiv nu hvordan tabellen skal gøres kortlægningsklar:

– Type

• X og Y koordinater

• Oracle Spatial

• SQL Server Geometri

• SQL Server Geografi

• . . .

– Stil

• Rækkevis

– Symbol

– Koordinatsystem

• Kan eventuelt være skrivebeskyttet

– Tabelgrænser: Vælg data. For en tom tabel vælges koordinatsystem

• Tryk på OK

• Bemærk at vagmulighederne afhænger af den valgte tabel

• Vælg nu den næste tabel, som skal gøres kortlægningsklar

• Annuller dialogboksen Vælg DBMS-tabel, hvis du ikke ønsker at gøre flere tabeller kortlægningsklare.

Page 56: MapInfo Pro og SQL Server - Uden opgaver

Gøre en DBMS-table kortlægningsklar - Notater

• Du skal ikke gøre dette hvis du har

– Uploadet tabellen med EasyLoader

– Gemt tabeller i databasen via Gem som i MapInfo Professional

• Du kan også udføre denne handling

– direkte in SQL Server

– Via MapBasic enten via et arbejdsområde, MapBasic-vinduet eller via en MapBasic applikation.

– Brug denne MapBasic kommando for at gøre en DBMS-tabel kortlægningsklar:

• Server ConnectionNumber Create Map . . .

Page 57: MapInfo Pro og SQL Server - Uden opgaver

Fjerne en tabel fra kortkataloget

• Hvis du har behov for at fjerne en tabel fra kortkataloget, findes der en

række måder at gøre dette:

• Slet posten manuelt via SQL Server Management Studio

• eller

... brug EasyLoader til at

fjerne tabellen via

knappen Kortkatalog... brug DBMS Katalog til

at fjerne tabellen via

knappen Slet indgang

Page 58: MapInfo Pro og SQL Server - Uden opgaver

Åbne DBMS-tabeller i MapInfo Professional

Page 59: MapInfo Pro og SQL Server - Uden opgaver

Åbne en DBMS-tabel

• Vælg Filer > Åbn

• Tryk på Åbn DBMS-tilslutning

eller vælg den allerede åbne

tilslutning i listen med Filtyper

• Vælg de ønskede tabeller

• Tilpas eventuelt indstillingerne for

de enkelte tabeller

• Vælg metode for åbning

• Tryk på OK

Page 60: MapInfo Pro og SQL Server - Uden opgaver

Åbne en DBMS-tabel før MapInfo Pro v12

• Vælg Filer > Åbn

• Tryk på Åbn DBMS-tilslutning

eller vælg den allerede åbne

tilslutning i listen med Filtyper

• Vælg den ønskede tabel og tryk

på Åbn.

Page 61: MapInfo Pro og SQL Server - Uden opgaver

Åbne en DBMS-tabel

• Specificer:

– Kolonner

– Rækker

– Adgangstype

• Sammenkædet

• Direkte med Cache

• Direkte uden Cache

– Hvor tab-filen skal gemmes

på disken

Page 62: MapInfo Pro og SQL Server - Uden opgaver

• Det er kun første gang at du åbner en DBMS-tabel at du skal angive

hvilke data du ønsker at åbne

• Efterfølgende kan du genåbne disse data ved at åbne tab-filen

• Tab- filen indeholder all nødvendig information

– Tabelstruktur

– tilslutningsinformation

– Kan også indeholde brugernavn og kodeord

• Hvis tabellen blev oprettet som “sammenkædet”, bør du overveje at

opdatere tabellen.

• Hvis tabellen blev oprettet som ”direkte”, vil MapInfo Professional læse

de nyeste data fra databasen

Genåbne en DBMS-tabel

Page 63: MapInfo Pro og SQL Server - Uden opgaver

Værktøjet Tabelstyring

• Lader dig se tilslutningsstreng og forespørgsel fra en DBMS-tabel

• Disse gemmes som metadata i tab-filen

Page 64: MapInfo Pro og SQL Server - Uden opgaver

Metadata sektion - Sammenkædet

!table

!version 400

!charset WindowsLatin1

Definition Table

Type LINKED Charset "WindowsLatin1"

Fields 4

MI_PRINX Integer ReadOnly ;

PLACENAME Char (50) ;

DESCRIPTION Char (250) ;

TYPE Char (20) ;

begin_metadata

"\DATALINK" = ""

"\DATALINK\ConnectionString" = "DSN=GIS2;Description=SQL Server 2008 GIS database;UID=AdminUser;APP=MapInfo Professional®;WSID=DKMP12948"

"\DATALINK\Query" = "select ""MI_PRINX"", ""PLACENAME"", ""DESCRIPTION"", ""TYPE"", ""OBJECT"" from ""GIS"".""dbo"".""PointsOfInterest"""

"\IsReadOnly" = "FALSE"

end_metadata

Page 65: MapInfo Pro og SQL Server - Uden opgaver

Metadata sektion - Direkte

!table

!version 500

!charset WindowsLatin1

Definition Table

Type ODBC

begin_metadata

"\IsReadOnly" = "FALSE"

"\DATALINK" = ""

"\DATALINK\Query" = "Select * From ""GIS"".""dbo"".""PointsOfInterest"""

"\DATALINK\ConnectionString" = "DSN=GIS2;Description=SQL Server 2008 GIS database;UID=AdminUser;APP=MapInfo Professional®;WSID=DKMP12948"

"\DATALINK\ToolKit" = "ODBC"

"\CACHE" = "ON"

"\MBRSEARCH" = "ON"

end_metadata

Page 66: MapInfo Pro og SQL Server - Uden opgaver

MapInfo Pro: Sammenkædet kontra Direkte

Page 67: MapInfo Pro og SQL Server - Uden opgaver

Sammenkædet kontra Direkte - I

• Sammenkædet

– Data bliver kopieret til MapInfo tabellen, når tabellen oprettes og når

den opdateres

– Adgang til databasen er kun nødvendig, når du gemmer eller

opdaterer tabellen

-> At arbejde uden tilslutning og lange transaktioner er understøttet

– Hastigheden er lige så god som en normal MapInfo tabel, når først

data er hentet

– Data kan tilgås skrivebeskyttet hvis der ikke findes en primær nøgle

– Hvis du bruger en forespørgsel til kun at hente de nødvendige data,

vil forbedre hastigheden ved download. Forespørgslen kan skabes

via Rækkefilter, kolonnefilte rog Ekspert dialogboksene

– Data hentes ned til samme placering som tab-filen

– Duplikerede data

Page 68: MapInfo Pro og SQL Server - Uden opgaver

Sammenkædet kontra Direkte - II

• Direkte med og uden cache

– Åbning er tabellerne første gang kan være hurtigere end

sammenkædet – afhængig af zoomniveaue i kortvinduet

– En “vis hele lager” eller zoom ud til hele visningen vil hente alle

poster fra tabellen

– Data skal have en primær nøgle

– Du skal altid have en åben tilslutning til databasen

Page 69: MapInfo Pro og SQL Server - Uden opgaver

Sammenkædet kontra Direkte - III

• Direkte uden cache

– MapInfo Professional læser “altid” direkte fra databasen

– Ethvert optegning, gennemse eller udvælgelse kan have en negativ

effekt på performance

– Data genlæses fra database-serveren ved et hvert opslag

Page 70: MapInfo Pro og SQL Server - Uden opgaver

Sammenkædet kontra Direkte – IV

• Direkte med cache

– Anvender en midlertidig cache

• 9.5.0 og tidligere:

– Tabel i hukommelsen, store tabeller kan fejle eller være

langsomme

– Cache gælder kun for et kortudsnit. Hvis du zoomer/panorerer

udenfor det forrige kortudsnit, læses data fra databasen igen

• 9.5.1 og nyere:

– MapInfo tabel gemt i en temporær fil

– Cachen er progressiv, data bevares i cachen i den aktuelle

session og cachen vokser løbende

– Data gemmes i cachen efterhånden som data indlæses fra

databasen. Dermed vil efterfølgende adgang til de samme data blive

hurtigere

– Cachen nulstilles når tabellen lukkes

Page 71: MapInfo Pro og SQL Server - Uden opgaver

Sammenkædet kontra Direkte – Konklusioner?

• Brug kun “direkte uden cache” når

– Data ændres hvert minut eller hurtigere

• Brug ”direkte med cache” når

– Tabellen er meget stor og du ikke kan filtrere via en forspørgsel

– Dine data ændres løbende, f.eks. dagligt

• Bruge sammenkædet når

– Dine data er statiske og kun ændres en gang hver uge/måned/år

– Performance er vigtig

– Du skal laver større analyser på dine data, f.eks. SQL-forespørgsler

Page 72: MapInfo Pro og SQL Server - Uden opgaver

Linked kontra Live – Konklusioner?

• Hvis du har en meget lille datamængde i din tabel, spiller det næppe

den store roller om du anvender direkte eller sammenkædet

• Med ”direkte” tabeller sikrer du dig at brugerne ”logger på” for at tilgå

data.

• Hvis du anvender ”direkte” tabeller, anbefaler vi at du tilgår dine tabeller

via et arbejdsområde med zoomniveauer, som forhindrer at unødvendig

data hentes

• Understøttelse af MARS har forbedret anvendelse af Direkte med

Cache

Page 73: MapInfo Pro og SQL Server - Uden opgaver

Lidt snak om performance, baggrund

• MapInfo Professional 11.0.3 kører på den lokale computer

• SQL Server 2008 Express kører på den lokale computer

• 17 tabeller i en SQL Server database, 250 MB i tab-filer

• 5 tabeller med punkter

– mellem 23.000 og 480.000 punkter pr. tabel, totalt 759.100 punkter

• 4 tabeller med polylinjer

– mellem 800 og 12.500 polylinjer pr tabel, totalt 48.100 polylinjer

– mellem 23.400 og 480.700 knuder pr tabel, totalt 653.900 knuder

• 8 tabeller med regioner

– mellem 1 og 179.800 regioner pr tabel, totalt 238.000 regioner

– mellem 10.900 og 1.303.800 knuder pr tabel, totalt 2.147.500 knuder

Page 74: MapInfo Pro og SQL Server - Uden opgaver

Lidt snak om performance, nogle tal

• Hente data fra alle tabeller ned i sammenkædede tabeller i et

kortvindue:

– 38 sekunder

• Hente data fra alle tabeller ned i direkte tabeller med cache i et

kortvindue uden zoomniveauer:

– Zoom: 500 m: 4 sekunder

– Zoom: 1000 m: 5 sekunder

– Zoom: 2500 m: 12 sekunder

– Zoom: 5000 m: 37 sekunder

• Åbne alle tabeller via et arbejdsområde med zoomniveauer:

– Sammenkædet: 0-1 sekund, + 1-2 sekunder til optegning af kort

– Direkte med cache: 1-2 sekund + 2-4 sekunder til optegning af kort

Page 75: MapInfo Pro og SQL Server - Uden opgaver

Opret ny tabel

Page 76: MapInfo Pro og SQL Server - Uden opgaver

Opret en ny tabel via MapInfo Professional

• Du kan oprette en tabel i SQL Server direkte

fra MapInfo Professional.

• MapInfo Professional tilføjer atuomatisk denne

nye tabel til kortkataloget i databasen.

• Vælg Filer > Ny...

• Vælg det ønskede i dialogboksen Ny tabel og

tryk på knappen Opret...

• Tilføj kolonner via dialogboksen Ny

tabelstruktur og tryk på knappen Opret...

Page 77: MapInfo Pro og SQL Server - Uden opgaver

Opret en ny tabel via MapInfo Professional

• Vælg datakilden i listen Gem som

type eller åbn en ny tilslutning via

knappen Åbn DBMS-tilslutning

• Indtast nu et navn på din nye tabel

i databasen og sikre dig at det

korrekte schema er valgt

• Tryk på knappen Gem for at

gemme tabellen

Page 78: MapInfo Pro og SQL Server - Uden opgaver

Opret en ny tabel via MapInfo Professional

• Nu skal du angive hvorledes denne

database-tabel skal åbnes i MapInfo

Professional

• Og angive om MapInfo Professional skal

oprette en primær indekskolonne og hvad

navnet skal være på denne

• Og hvordan de geografiske data skal

gemmes

• Og hvordan stilen skal håndteres

• Tryk på OK for at oprette og åbne denne

nye tabel i MapInfo Professional

Page 79: MapInfo Pro og SQL Server - Uden opgaver

DAG 2

Page 80: MapInfo Pro og SQL Server - Uden opgaver

Forespørgsler ved åbning af DBMS-tabeller

Page 81: MapInfo Pro og SQL Server - Uden opgaver

Forespørgsler – Hvornår udføres de?

• Sammenkædet

– Forespørgslen udføres når

• tabellen åbnes første gang

• tabellen opdateres

• Direkte med cache

– Forespørgslen udføres når

• Tabellen tilføjes til et kort (eller et listevindue)

• Du zoomer eller panorerer i kortet

• Direkte uden cache

– Forespørgslen udføres når

• Tabellen tilføjes til et kort (eller et listevindue)

• Du zoomer eller panorerer i kortet

• Du klikker i kortet med vælg-værktøjet

• Du klikker i kortet med info-værktøjet

• …

Page 82: MapInfo Pro og SQL Server - Uden opgaver

Forespørgsler – Rækkefiltrering

• Du kan angive hvilke poster, du ønsker at hente fra databasen

• Ved hjælp af attributter

• Ved hjælp af geografi

• Værdien af Current_Mapper og Selection er statiske og opdateres ikke

med nye værdier, når tabellen opdateres.

“Selection” er kun tilgængelig hvis der er

en aktiv udvælgelse

“Current_Mapper” er kun tilgængelig hvis

der er et kort aktivt

“Object” er kun tilgængelig for

kortlægningsklare tabeller

“Like” og “not like” er kun tilgængelige for

tekst-kolonner

Brug ikke ”” omkring tekstværdien!

Page 83: MapInfo Pro og SQL Server - Uden opgaver

Forespørgsler - Ekspert

• Skriv dine egne SQL-udtryk

• Syntaksen afhænger af SQL dialekten i databasen

• MapInfo Professional vil “oversætte” nogle specifikke udtryk når

forespørgslen sendes til databasen:

– Object

– Within

– Selection

– Current_Mapper

– …

• Du kan gemme og indlæse forespørgsler via de to knapper på højre

side i dialogboksen

Page 84: MapInfo Pro og SQL Server - Uden opgaver

Forespørge på datoer via Eksport-dialogboksen

• Du kan f.eks. anvende ekspert-dialogboksen til at forespørge på datoer

• Brug følgende udtryk til at konvertere en tekst til en dato:

– Convert(date, ‘ddmmåååå’, 112), hvor ”ddmmåååå” erstattes af den

ønskede dato

Page 85: MapInfo Pro og SQL Server - Uden opgaver

Metadata for geografisk forespørgsel

!table

!version 650

!charset WindowsLatin1

Definition Table

Type LINKED Charset "WindowsLatin1"

Fields 3

MI_PRINX Integer ReadOnly ;

NAVN Char (50) ;

TYPE Char (50) ;

begin_metadata

"\IsReadOnly" = "FALSE“

"\DATALINK" = ""

"\DATALINK\ConnectionString" = "DSN=GIS;MARS_Connection=Yes"

"\DATALINK\Query" = "select ""MI_PRINX"", ""NAVN"", ""TYPE"", ""OBJECT"" from

""GIS"".""dbo"".""POI"" where (OBJECT within Rectangle(

628163.45078508,6112409.85175394,720526.19639343,6186305.28363101))"

"\DATALINK\SpatialObj" = "ST_Spatial(HG_Box(ST_Point(628163.451003735300,

6186305.285449981700),ST_Point(720526.200186016970,6112409.856650807900))

,ST_Point(674344.821471954000,6149357.566051412400))"

end_metadata

Page 86: MapInfo Pro og SQL Server - Uden opgaver

Uploade tabeller til SQL Server

Page 87: MapInfo Pro og SQL Server - Uden opgaver

EasyLoader

EasyLoader …

• … leveres med MapInfo Professional. Programmet kan også hentes på

vores hjemmeside

• … er et selvstændigt program, som kan køres udenfor MapInfo

Professional

• … er et Windows-program, men kan forbinde sig til databaser, der kører

på andre operativsystemer

• … kan køres i batch-mode fra

– kommandoprompt

– Bat-fil

– program

Page 88: MapInfo Pro og SQL Server - Uden opgaver

Uploade eksisterende data med EasyLoader

• EasyLoader lader dig uploade eksisterende data til en database

– Oracle Locator/Spatial

– MapInfo SpatialWare

– SQL Server2008 Spatial

– PostgreSQL/PostGIS

– MS Access, XY-koordinater

• Vælg en eller flere tabeller, der skal uploades

• Angiv hvorledes de skal uploades

• Kan oprette kortkataloget

• Kan fjerne tabeller fra kortkataloget

• Kortkataloget opdateres

Page 89: MapInfo Pro og SQL Server - Uden opgaver

EasyLoader indstillinger

• Indstillinger

– Geometri kontra Geografi

– Schema

– Giv “public” adgang til tabellerne

• OBS: Det giver ”public”

skriverettigheder til tabellen

– Opret geografisk indeks i databasen

– Opret ID kolonne som Identity

– Konverter Dato og Tid koloner til

DatoTid

– Angiv rækkevis stil

– Opret indeks på andre kolonner

Page 90: MapInfo Pro og SQL Server - Uden opgaver

Tabelnavne og database-tabelnavneMapInfo tabeller

• Adresser

• Bygninger

• Byflade

• Vejmidter

• Kommunegrænsen

• Matrikler

• Kommunale_grunde

Database-tabelnavne

→ Adresser

→ Bygninger

→ Byflader

→ Vejmidter

→ Kommunegraenser

→ Matrikler

→ Kommunale_Grunde

Page 91: MapInfo Pro og SQL Server - Uden opgaver

EasyLoader kommandolinje: A - F

• /A Tilføj alle tabeller til samme servertabel– EasyLoader.exe /A

• /B Schemanavn– EasyLoader.exe /B GIS

• /C Opret indeks for alle lokalt indekserede kolonner– EasyLoader.exe /C

• /D Mappe til lokale MapInfo tabeller til åbning af data fra databasen– EasyLoader.exe /D C:\Tables

• /E Eksklusiv bruger af tabellen– EasyLoader.exe /E

• /F Navn på logfil– EasyLoader.exe /F ez_log.log

Page 92: MapInfo Pro og SQL Server - Uden opgaver

EasyLoader kommandolinje: G - O

• /G Giv “public” adgang til tabeller– EasyLoader.exe /G

• /I Opret IKKE geografisk indeks– EasyLoader.exe /I

• /K Opret “Identity” kolonne i SQL Server – EasyLoader.exe /K

• /L Filnavn på fil med liste over MapInfo tabeller– EasyLoader.exe /L C:\tabfiles.txt

Eksempel på indhold i filen:

D:\Data\Adresser.tab;Adresser

D:\Data\Bygninger.tab;Bygninger

• /M Geografi gemt som koordinater {MICODE | XY} – EasyLoader.exe /M XY

• /O Tilslutningsstreng til Oracle– EasyLoader.exe /O user_name/password@server_name

Page 93: MapInfo Pro og SQL Server - Uden opgaver

EasyLoader kommandolinje: P - T

• /P { A | C | R } Tilføj (A) / Opret (C) / Erstat (R)– EasyLoader.exe /P C

• /Q Afslut EasyLoader efter udførsel– EasyLoader.exe /Q

• /R Overskriv tabel i databasen– EasyLoader.exe /R

• /S Tilslutningsstreng

– EasyLoader.exe /S DSN=MyDataSource;UID=AdminUser;PWD=Admin

– EasyLoader.exe /S UID=MyId;DATABASE=MyDB;HOST=MyServer;

SERVER=MyServer_tli;SERVICE=sqlexec;PROTOCOL=onsoctcp

• /T MapInfo tablenavn;Databasetabelnavn;Rækkeinterval

!! Brug ikke anførselstegn (””)

– EasyLoader.exe /T c:\data\Cities.tab;Cities;1,500

Page 94: MapInfo Pro og SQL Server - Uden opgaver

EasyLoader kommandolinje: U - Z

• /U Opret IKKE et primært indeks– EasyLoader.exe /U

• /X Gem interval– EasyLoader.exe /X 1000

• /Y Navn på rækkevis stil kolonne– EasyLoader.exe /Y STYLE

– EasyLoader.exe /Y NO_STYLE

• /Z Brug altid Geometri

– EasyLoader.exe /Z

Page 95: MapInfo Pro og SQL Server - Uden opgaver

Upload via Gem kopi som

• Fra MapInfo Professional can du gemme din tabel direkte over i en

database via Filer > Gem kopi som...

• Sørg for at vælge den ønskede database-tilslutning i Save as type listen

• Indtast navnet på servertabellen og vælg det ønskede schema

• Angiv efterfølgende navn på lokal tabel som peger på den nye tabel i

databasen (via Direkte tilslutning)

• Gem kopi som tilføjer automatisk:

– MI_PRINX

– MI_STYLE

Page 96: MapInfo Pro og SQL Server - Uden opgaver

MapBasic syntaks for Save as

• MapBasic syntaksen for at gemme en tabel i en database ser således

ud:

Commit Table AV97_W

As "C:\DBMS\Buildings_Rotterdam.tab"

Type ODBC Connection 1

Table """dbo""."“Buildings_SAS"""

Type SQLServerSpatial Geometry

ConvertDateTime ON Interactive

• Nogle af parametrene er frivillige

Page 97: MapInfo Pro og SQL Server - Uden opgaver

Dato-kolonner

• Du kan risikere denne fejl:

• Den kan skyldes at året er udenfor SQL Serveren interval for år i

DateTime-formatet (1753 til 9999)

• Du kan finde disse datoer med denne forespørgsel:Select * from MIN_TABEL

Where not Year(DATO_KOLONNE) between 1753 and 9999

into Selection

– hvor ”DATO_KOLONNE” er en Dato-kolonne i MapInfo

Page 98: MapInfo Pro og SQL Server - Uden opgaver

Geografiske datafejl

• Der kan være problemer med visse objekter i MapInfo tabeller. Det kan

derfor være en god ide at køre nedenstående forespørgsler for at finde

eventuelle oplagte problemer:

• Finder flader med et areal under 1 kvmSelect * From MIN_TABEL

Where Str$(ObjectInfo(OBJ, 1)) In (”7”, ”8”, ”9”)

Into __FLADER

Select * From __FLADER

Where CartesianArea(OBJ, ”sq m”) < 1

Into __MULIGE_FEJL_FLADER

• Finder linære objekter med et længde under 1 mSelect * From MIN_TABEL

Where Str$(ObjectInfo(OBJ, 1)) In (”3”, ”4”)

Into __LINJER

Select * From __ LINJER

Where CartesianObjectLen(OBJ, ”m”) < 1

Into __MULIGE_FEJL_LINJER

Page 99: MapInfo Pro og SQL Server - Uden opgaver

Redigere i tabeller fra SQL Server

Page 100: MapInfo Pro og SQL Server - Uden opgaver

Redigere

• Tabellen i databasen skal have en primær indeks kolonne

– I et view skal denne kolonne hedde MI_PRINX

• Du kan redigere data med et hvert værktøj i MapInfo Professional

• Når du redigerer koordinater på en XY-koordinat table, bliver

koordinaterne opdateret i kolonnerne med X og Y-koordinater i

database-tabellen

• Hvis du ændrer stilen på en tabel, med rækkevis stil aktiveret, gemmes

stilen i kolonnen med stile, ofte navngivet ”MI_STYLE”. På andre

tabellen vil ændringer af stilen ikke blive fastholdt, når du opdaterer

tabellen

Page 101: MapInfo Pro og SQL Server - Uden opgaver

Redigering – Flere samtidige brugere

• Hvis flere brugere skal redigere den samme tabel i SQL Server, skal de

ikke tilgå denne tabel via den samme fysiske fil på harddisken.

• Hvis de gør dette, vil kun en bruger kunne redigere tabellen ad gangen

– de øvrige brugere vil blive forhindret i at redigere så snart den første

brugere begynder at redigere.

• De skal altså tilgå databasen via hver deres lokale kopi af en MapInfo

tabel. Den kan være såvel sammenkædet som direkte

Page 102: MapInfo Pro og SQL Server - Uden opgaver

Gemme

• Tryk på Gem tabel for at gemme ikke gemte ændringer i en

DBMS tabel

• Når ændringer gemmes til databasen, undersøger MapInfo om

posten der er blevet ændret, er blevet ændret i databasen efter

den blev læst derfra. Hvis det er tilfældet bliver du præsenteret

for en dialog, hvor du skal løse denne konflikt

• Gemme ændringer lokalt i (kun for sammenkædede tabeller)

kan gøres ved blot at lukke tabellen. MapInfo vil så spørge dig

hvad der skal ske med de ikke-gemte ændringer:

Gem ændringer i MapInfo-Tabel

– Gem ændringer på server

– Fortryd ændringer

Page 103: MapInfo Pro og SQL Server - Uden opgaver

Løs konflikter i MapInfo Pro

• Hvis en tabel er blevet ændret i databasen, når du gemmer ændringer vil MapInfo præsenterer brugeren for en Løs konflikt dialogboks som vist

• Du kan her se hvilke data/kolonner, der er blevet ændret

• Du kan se den originale database version, den aktuelle MapInfo version og den aktuelle database version

• Du kan vælge hvad der skal beholdes og hvad der skal ændres –kolonnevis

• Du kan her se at kolonnen

PANDSTATUS er ændret og til hvad.

• Du kan også se at geografien (object)

er blevet ændret. Det er dog svært at

se på hvilken måde den er ændret

Page 104: MapInfo Pro og SQL Server - Uden opgaver

Opdatere sammenkædede tabeller

Page 105: MapInfo Pro og SQL Server - Uden opgaver

Opdatere

• Genindlæse data fra databasen kan gøres via Tabel > Juster > Opdater

DBMS-Tabel...

• Opdatere en DBMS-tabel

– Undersøger ændringer i databasen

– Anvender forespørgslen. Bemærk at disse betingelser er statiske.

– Hvis du har angivet en forespørgsel med brug af aktuelt kort eller

aktuel udvælgelse, vil den originale værdi igen blive anvendt. For at

at angive en ny værdi, f.eks. Et nyt kortudsnit, er du nødt til at

genåbne tabellen fra databasen og her angive den nye betingelse.

• MapBasic syntaks: Server Refresh name_of_table

Page 106: MapInfo Pro og SQL Server - Uden opgaver

Opdatere DBMS-tabeller via et arbejdsområde

!Workspace

!Version 950

!Charset WindowsLatin1

Dim nConn As Integer

nConn = Server_Connect( "ODBC", "DSN=GIS;UID=EditUser;PWD=Edit" )

Print "Åbnet tilslutning som nr: " + nConn

Print "Åbner nu tabellerne..."

Open Table "D:\3. demo\dbms\Byflade.tab" Interactive

Map From Byflade

Print "Opdaterer nu DBMS-tabellerne..."

Server Refresh Byflade

Close Table Byflade

Print "Så er vi færdige"

Server nConn Disconnect

Undim nConn

Page 107: MapInfo Pro og SQL Server - Uden opgaver

DAG 3

Page 108: MapInfo Pro og SQL Server - Uden opgaver

MapInfo tabeller kontra tabeller i SQL Server

Page 109: MapInfo Pro og SQL Server - Uden opgaver

MapInfo tabeller kontra tabeller i SQL Server

• Der er en række forskelle mellem MapInfos flade filer og opbevaring af

data i SQL Server

– Flere programmer kan tilgå data, ikke kun MapInfo software

– Flerbruger editering

– Alle fordelene ved relationelle databaser: relationer, views,

sikkerhed, triggers mm.

• Når data opbevares i MapInfos flade filer, skal en applikation håndtere

elementer som

– Tidsstempling ved ændring af data

– Holde styr på historiske versioner af data

– mm.

• Når data opbevares i databasen, kan databasen varetage disse ting for

alle programmer, der måtte tilgå data.

Page 110: MapInfo Pro og SQL Server - Uden opgaver

Oprette views i SQL Server

Page 111: MapInfo Pro og SQL Server - Uden opgaver

Hvad er et view?

• Et view kan betragtes som en måde at se på data

• Med et view kan man begrænse antallet af kolonner eller/og antallet af

poster, man ser.

• Med et view kan man også sammenstille flere kolonner til én kolonne.

F.eks. kan man sammensætte VEJNAVN, HUSNR og

HUSNR_BOGSTAV til en ADRESSE-kolonne

• Man kan også bruge views til at berige et tabel med data fra en anden

tabel, f.eks. overføre vejnavnet fra en vejnavnetabel til en tabel med

adresser. Dette gøres ofte via et join, en sammenkædning, af tabeller.

Du kan gøre dette enten på alfanmeriske eller geogratisk attributter.

• Et view kan også sammensætte flere tabeller til en

Page 112: MapInfo Pro og SQL Server - Uden opgaver

Oprette views i SQL Server – New view, tables

• Højreklik på Views mappen og vælg New View…

• Vælg den eller de tabellern som skal indgå i viewet fra Add Table

dialogboksen

Page 113: MapInfo Pro og SQL Server - Uden opgaver

Oprette views i SQL Server – joins

• Træk kolonnen fra den første tabel over til kolonnen fra den anden tabel

for at markere hvad de skal knytte de to tabeller sammen

• Bemærk at dette også skrives i SQL vinduet nederst

Page 114: MapInfo Pro og SQL Server - Uden opgaver

Oprette views i SQL Server – kolonner

• Sæt nu flueben ved de kolonner, som du ønsker at medtage i viewet

• Du kan omdøbe kolonnerne (give dem et alias) via Alias feltet

Page 115: MapInfo Pro og SQL Server - Uden opgaver

Oprette views i SQL Server - test

• Afprøv viewet via knappen Execute SQL, Ctrl + R eller F5

• Kontroller resultatet i listevinduet nederst

Page 116: MapInfo Pro og SQL Server - Uden opgaver

Oprette views i SQL Server - gem

• Tryk nu på knappen Save eller Ctrl + S og navgiv dit view

• Overvej at ”prefixe” dit view med f.eks. ”view”, ”vw” eller lignende

Page 117: MapInfo Pro og SQL Server - Uden opgaver

Oprette views i SQL Server – kortlægningsklar

• Hvis viewet skal vises i et kortvindue i MapInfo Professional, skal du

gøre det kortlægningsklart (registrere det i kortkataloget) via Tabel >

Juster > Gør DBMS-tabel kortlægningsklar

• Du kan også manuelt tilføje viewet til kortkataloget, hvis du kender alle

parametrene

• Du kan også kopiere posten med den grundlæggende tabel i

kortkatalog, indsætte denne igen og ændre tabelnavnet til navnet på

viewet

Page 118: MapInfo Pro og SQL Server - Uden opgaver

Bedre performance med views

• Opretter du views hvor du også ønsker at man skal kunne finde

specifikke poster lynhurtigt, kan det være en fordel at indeksere dine

views

• For at kunne indeksere dine views skal de dog være koblet sammen

med de bagvedliggende data, det kalder man SCHEMABINDING

• Derudover skal du også lave et entydigt grupperet indeks (unique

clustered index) før du kan indeksere andre kolonner

• Nu kan du indeksere dine kolonner, f.eks. dit søgefelt med adresser

eller lignende.

• Læs mere her:

– http://en.wikipedia.org/wiki/Materialized_view

– http://msdn.microsoft.com/en-us/library/dd171921.aspx

– http://www.mssqltips.com/sqlservertip/1610/sql-server-schema-

binding-and-indexed-views/

Page 119: MapInfo Pro og SQL Server - Uden opgaver

SCHEMABINDING

• Højreklik på dit view og vælg Scritp View As > Alter To > New Query

Window

• Tilføj ”WITH SCHEMABINDING” som vist nedenfor

• Tryk F5 eller vælg Execute-knappen for at ændre dit view

Page 120: MapInfo Pro og SQL Server - Uden opgaver

Entydigt grupperet indeks

• Højreklik på Index mappen under dit view og vælg Create New....

• Angiv et navn, f.eks. ”PK_” + navnet på dit view

• Vælg din primære indeks kolonne via knappen Add

• Vælg Clustered og sæt flueben i Unique

• Tryk på OK

Page 121: MapInfo Pro og SQL Server - Uden opgaver

Et view der sammensætter tabeller

Nedenstående skal køres fra et Query-vindue – ikke som et view:Create View [dbo].[viewSearch] WITH SCHEMABINDING As

Select VEJNAVN

+ ' ' + Cast(HUS_NR as VarChar) + HUSBOGSTAV

+ ', ' + Cast(POSTNR As VarChar)

+ ' ' + POSTDIST As SEARCHVALUE, MI_PRINX, SP_GEOMETRY

From dbo.ADRESSER

Union All

Select MAS_MATRNR + ' ' + ELAVNAVN As SEARCHVALUE

, (1000000 + MI_PRINX)

As MI_PRINX

, SP_GEOMETRY

From dbo.JORDSTYKKER

• Og tilføj den så til MapCatalog

Page 122: MapInfo Pro og SQL Server - Uden opgaver

Introduktion til SQL Server's spatial objekter

Page 123: MapInfo Pro og SQL Server - Uden opgaver

Geometry kontra Geography

• Geometry datatypen understøtter plane – eller projicerede - data. Geometry datatypen overholder standarden Open Geospatial Consortium (OGC) Simple Features for SQL Specification version 1.1.0.

• Derudover understøtter SQL Server Geography datatypen, somgemmer ellipsoidisk data, som f.eks. GPS længde/bredde koordinater.

• Her er en oversigt over de objekttyper, som Geometry-typen understøtter:

– Kun de blå er ”faktiske” objekter

– http://msdn.microsoft.com/en-us/library/bb964711.aspx

Punkt

Linje Region

Region Pline

Multi

Punkt

Samlingsobjekt

Page 124: MapInfo Pro og SQL Server - Uden opgaver

SQL Server 2008 kontra 2012

• Understøttelse af cirkelbuer og tilhørende metoder

– STNumCurves

– STCurveN

– STCurveToLine

– CurveToLineWithTolerance

– BufferWithCurves

• Beregning af korteste linje mellem to geometrier

– ShortestLineTo

• Validering af geometrier

– Mere tolerant

– IsValidDetailed

• Præcision forbedret fra 27 til 48 bits

– færre afrundingsproblemer

• Mere automatisk oprettelse af spatiale indeks

Page 125: MapInfo Pro og SQL Server - Uden opgaver

Geometry OGC metoder - 2008

• STArea

• STAsBinary

• STAsText

• STBoundary

• STBuffer

• STCentroid

• STContains

• STConvexHull

• STCrosses

• STDifference

• STDimension

• STDisjoint

• STDistance

• STEndpoint

• STEnvelope

• STEquals

• STExteriorRing

• STGeometryN

• STGeometryType

• STInteriorRingN

• STIntersection

• STIntersects

• STIsClosed

• STIsEmpty

• STIsRing

• STIsSimple

• STIsValid

• STLength

• STNumGeometries

• STNumInteriorRing

• STNumPoints

• STOverlaps

• STPointN

• STPointOnSurface

• STRelate

• STSrid

• STStartPoint

• STSymDifference

• STTouches

• STUnion

• STWithin

• STX

• STY

De er alle følsomme

overfor store/små

bogstaver!!!

Page 126: MapInfo Pro og SQL Server - Uden opgaver

Geometry OGC metoder - 2012

• STArea

• STAsBinary

• STAsText

• STBoundary

• STBuffer

• STCentroid

• STContains

• STConvexHull

• STCrosses

• STCurveN

• STCurveToLine

• STDifference

• STDimension

• STDisjoint

• STDistance

• STEndpoint

• STEnvelope

• STEquals

• STExteriorRing

• STGeometryN

• STGeometryType

• STInteriorRingN

• STIntersection

• STIntersects

• STIsClosed

• STIsEmpty

• STIsRing

• STIsSimple

• STIsValid

• STLength

• STNumCurves

• STNumGeometries

• STNumInteriorRing

• STNumPoints

• STOverlaps

• STPointN

• STPointOnSurface

• STRelate

• STSrid

• STStartPoint

• STSymDifference

• STTouches

• STUnion

• STWithin

• STX

• STY

De er alle følsomme

overfor store/små

bogstaver!!!

Page 127: MapInfo Pro og SQL Server - Uden opgaver

Invalide geometrier

• Finde poster med invalide geometrier

Select * From dbo.MYTABLE

Where SP_Geometry.STIsValid() = 0

• Korrigere poster med invalider geometrier

Update dbo.MYTABLE

Set SP_Geometry = SP_Geometry.MakeValid()

Page 128: MapInfo Pro og SQL Server - Uden opgaver

Koordinatsystemer – EPSG-koder

• Finde EPSG-koder for en tabel, også kaldet SRID:select distinct SP_GEOMETRY.STSrid from dbo.MINTABEL

• Hvis den ikke er korrekt, kan man ændre den via denne kommando:Update dbo.MINTABEL Set SP_GEOMETRY.STSrid = 25832

• Dog bør man ikke ændre EPSG-koden til en for et helt andet

koordinatsystem. Der findes dog koordinatsystemer med forskellige

EPSG-koder, f.eks.:"UTM Zone 32 Euref89\p25832“

, 8, 115, 7, 9.0, 0, 0.9996, 500000, 0

"ETRS TM Zone 32, Northern Hemisphere (ETRS89)\p3044“

, 8, 115, 7, 9, 0, 0.9996, 500000, 0

• Problemet kan løses ved at kopiere MapInfoW.prj fra MapInfo Pro

mappen over i Tools mappen. Bør allerede være rettet i v11.5 og nyere

versioner

Page 129: MapInfo Pro og SQL Server - Uden opgaver

Spatial SQL eksempler

Beregne areal af valide objekter

Select *, SP_GEOMETRY.STArea() As Area

From dbo.BYFLADER

Where SP_GEOMETRY.STIsValid() = 1

Beregne længder på valide objekter

Select *, SP_GEOMETRY.STLength() As Length

From dbo.VEJMIDTER

Where SP_GEOMETRY.STIsValid() = 1

Page 130: MapInfo Pro og SQL Server - Uden opgaver

Spatial SQL eksempler

Find kommuner og deres naboer

Select t1.KOMNAVN, t2.KOMNAVN

From dbo.KOMMUNE t1, dbo.KOMMUNE t2

Where (t1.SP_GEOMETRY.STTouches(t2.SP_GEOMETRY) = 1

Or t1.SP_GEOMETRY.STIntersects(t2.SP_GEOMETRY) = 1)

And t1.MI_PRINX <> t2.MI_PRINX

Order By t1.KOMNAVN

Page 131: MapInfo Pro og SQL Server - Uden opgaver

Spatial SQL eksempler

Tilføj et bynavn til netop de veje, der skærer en by

Select V.*, B.BYNAVN

FROM dbo.VEJMIDTER AS V

CROSS JOIN dbo.BYFLADE AS B

WHERE (V.SP_GEOMETRY.STIntersects(B.SP_GEOMETRY) = 1)

Tilføj et bynavn til de veje som skærer en by og NULL til de øvrige veje

Select V.*, B.BYNAVN

FROM dbo.VEJMIDTER AS V

LEFT OUTER JOIN dbo.BYFLADE AS B

On (V.SP_GEOMETRY.STIntersects(B.SP_GEOMETRY) = 1)

Page 132: MapInfo Pro og SQL Server - Uden opgaver

Nogle join typer i SQL Server

• Inner JoinSELECT V.*, B.BYNAVN

FROM dbo.VEJMIDTER AS V

INNER JOIN dbo.BYFLADE AS B

ON (V.SP_GEOMETRY.STIntersects(B.SP_GEOMETRY) = 1)

• Left Outer JoinSELECT V.*, B.BYNAVN

FROM dbo.VEJMIDTER AS V

LEFT OUTER JOIN dbo.BYFLADE AS B

ON (V.SP_GEOMETRY.STIntersects(B.SP_GEOMETRY) = 1)

• Cross JoinSELECT V.*, B.BYNAVN

FROM dbo.VEJMIDTER AS V

CROSS JOIN dbo.BYFLADE AS B

WHERE (V.SP_GEOMETRY.STIntersects(B.SP_GEOMETRY) = 1)

Page 133: MapInfo Pro og SQL Server - Uden opgaver

Inner Join

ID NAME LASTNAME

1 Peter 1

2 Paul 3

3 Mary 5

4 Ann 2

ID LASTNAME

1 Møller

2 Smith

3 McCartney

4 Probert

ID NAME LASTNAME

1 Peter Møller

2 Paul McCartney

4 Ann Smith

SELECT P.ID, P.NAME, L.LASTNAME

FROM dbo.PERSONS AS P

INNER JOIN dbo.LASTNAMES AS L

ON (P.LASTNAME = L.ID)

Page 134: MapInfo Pro og SQL Server - Uden opgaver

Left Outer Join

ID NAME LASTNAME

1 Peter 1

2 Paul 3

3 Mary 5

4 Ann 2

ID LASTNAME

1 Møller

2 Smith

3 McCartney

4 Probert

ID NAME LASTNAME

1 Peter Møller

2 Paul McCartney

3 Mary <NULL>

4 Ann Smith

SELECT P.ID, P.NAME, L.LASTNAME

FROM dbo.PERSONS AS P

LEFT OUTER JOIN dbo.LASTNAMES AS L

ON (P.LASTNAME = L.ID)

Page 135: MapInfo Pro og SQL Server - Uden opgaver

Cross Join

ID NAME LASTNAME

1 Peter 1

2 Paul 3

3 Mary 5

4 Ann 2

ID LASTNAME

1 Møller

2 Smith

3 McCartney

4 Probert

ID NAME LASTNAME

1 Peter Møller

2 Paul McCartney

4 Ann Smith

SELECT P.ID, P.NAME, L.LASTNAME

FROM dbo.PERSONS AS P

CROSS JOIN dbo.LASTNAMES AS L

WHERE (P.LASTNAME = L.ID)

Note: A Cross Join without condition will join every

record in the first table with every record in the

other table

Page 136: MapInfo Pro og SQL Server - Uden opgaver

Triggers i SQL Server

Page 137: MapInfo Pro og SQL Server - Uden opgaver

Hvad er Triggers?

• En trigger kan blive kaldt når der sker noget specielt i databasen

• De kan f.eks. kaldes når poster indsættes, opdateres eller slettes

• De kan også blive kaldt når en bruger logger på databasen

Page 138: MapInfo Pro og SQL Server - Uden opgaver

Trigger indstillinger

• Højreklik på Databaseserveren > Properties, Advanced

– Allow triggers to fire others sættes til FALSE

• Højreklik på databasen > Properties, Options

– Recursive triggers Enabled sættes til FALSE

Page 139: MapInfo Pro og SQL Server - Uden opgaver

Midlertidige tabeller i triggers

• SQL Server har to midlertidige tabeller, som kan anvendes i en trigger:

• inserted

– Indeholder de nye poster, der skal indsættes i, altså de ændringer

der er foretaget

– Findes ved indsættelse af nye poster og opdatering af poster

• deleted

– Indeholder posterne, der er blevet opdateret eller slettet, altså som

posterne så ud inden de blevet rettet/slettet

– Findes ved opdatering af poster og sletning af poster

Page 140: MapInfo Pro og SQL Server - Uden opgaver

Blev en kolonne opdateret?

• Man kan også forespørge på om en given kolonne blev opdateret i

forbindelse med en opdatering.

• Det gøres med funktionen Update(), som returner TRUE for

kolonnenavne, som er blevet opdateret

If UPDATE(BYGNINGSTYPE)

Begin

If (exists(Select *

from inserted

where BYGNINGSTYPE = 'Bygning, stråtag'))

Begin

Insert into dbo.StraataekSikkerhedszone

(BYGN_ID, SP_GEOMETRY)

(Select MI_PRINX, SP_GEOMETRY.STBuffer(150)

From inserted

Where BYGNINGSTYPE = 'Bygning, stråtag')

End

End

Page 141: MapInfo Pro og SQL Server - Uden opgaver

Oprette triggers

• Højreklik på Trigger mappen på den tabel, som du ønsker at oprette en

trigger til og vælg New trigger…

• Brug Query > Specify Values for Template Parameters eller

Ctrl+Shift+M for at indsætte nogle standardværdier i triggeren

• Nu skal du ”bare” tilpasse selve trigger udtrykket efter dine behov

• Du skal eksekvere (Execute) triggeren for rent faktisk at oprette den

Page 142: MapInfo Pro og SQL Server - Uden opgaver

Trigger kommando

CREATE TRIGGER [schema_name.] trigger_name

ON { table | view }

[ WITH <dml_trigger_option> [ ,...n ] ]

{ FOR | AFTER | INSTEAD OF } { [INSERT] [,] [UPDATE] [,] [DELETE]}

[ NOT FOR REPLICATION ]

AS { sql_statement [ ; ]

[ ,...n ]

| EXTERNAL NAME <method specifier [ ; ] > }

Page 143: MapInfo Pro og SQL Server - Uden opgaver

En trigger til alt

• Man kan lave en trigger, der håndterer såvel indsættelse, opdatering og

sletninger i en tabel.

• Man skal sørge for at denne trigger kan fastslå, hvilken hændelse den

kaldes for

If (not exists(SELECT * FROM inserted))

Begin -- records where deleted/der blev slette poster

End

Else

Begin

If exists(SELECT * FROM deleted)

Begin -- records where updated/der blev opdateret poster

End

Else

begin -- records were inserted/der blev indsat poster

End

End

Page 144: MapInfo Pro og SQL Server - Uden opgaver

Opret en tidsstemplende trigger ved opdatering

CREATE TRIGGER dbo.trg_MY_TABLE_OnUpdate

ON dbo.MY_TABLE

AFTER UPDATE

AS

Begin

Update dbo.MY_TABLE

Set DATE_CHANGED = CURRENT_TIMESTAMP,

USER_CHANGED = SYSTEM_USER

Where MI_PRINX In (Select MI_PRINX From inserted);

End

GO

Page 145: MapInfo Pro og SQL Server - Uden opgaver

Opret en tidsstemplende trigger ved indsættelse

CREATE TRIGGER dbo.trg_MY_TABLE_OnInsert

ON dbo. MY_TABLE

AFTER INSERT

AS

Begin

Update dbo.MY_TABLE

Set DATE_CREATED = CURRENT_TIMESTAMP,

USER_CREATED = SYSTEM_USER

Where MI_PRINX In (Select MI_PRINX From inserted);

End

GO

Page 146: MapInfo Pro og SQL Server - Uden opgaver

Opret en tidsstemplende trigger ved indsættelse

og opdatering - I

CREATE TRIGGER dbo.trg_MY_TABLE_OnInsert

ON dbo. MY_TABLE

AFTER INSERT

AS

Begin

If exists(SELECT * FROM deleted)

Begin -- records where updated/der blev opdateret poster

Update dbo.MY_TABLE

Set DATE_CREATED = CURRENT_TIMESTAMP,

USER_CREATED = SYSTEM_USER

Where MI_PRINX In (Select MI_PRINX From inserted);

End

Else

...

Page 147: MapInfo Pro og SQL Server - Uden opgaver

Opret en tidsstemplende trigger ved indsættelse

og opdatering - II

...

begin -- records were inserted/der blev indsat poster

Update dbo.MY_TABLE

Set DATE_CREATED = CURRENT_TIMESTAMP,

USER_CREATED = SYSTEM_USER

Where MI_PRINX In (Select MI_PRINX From inserted);

End

End

GO

Page 148: MapInfo Pro og SQL Server - Uden opgaver

Opret en”historik” trigger

CREATE TRIGGER dbo.trgCopyToHistory

ON dbo.KOMMUNE

AFTER DELETE,UPDATE

AS

Begin

Insert Into dbo.KOMMUNE_historik

(OBJECTID, ID_NR, NAVN, OBJEKTTYPE, OBJEKTKODE

, ADM_KODE, MID_FEJL, PRODUCENT, MI_PRINX_ORIGINAL

, SP_GEOMETRY, MI_STYLE)

Select OBJECTID, ID_NR, NAVN, OBJEKTTYPE, OBJEKTKODE

, ADM_KODE, MID_FEJL, PRODUCENT, MI_PRINX

, SP_GEOMETRY, MI_STYLE

From deleted

End

Go

Page 149: MapInfo Pro og SQL Server - Uden opgaver

Trigger, der opdaterer X og Y koordinater

• Create TRIGGER [dbo].[trg_MYTABLE_OnUpdate]

ON [dbo].[MYTABLE]

AFTER INSERT, UPDATE

AS

BEGIN

UPDATE DBO.MYTABLE

SET X = SP_GEOMETRY.STX,

Y = SP_GEOMETRY.STY

WHERE MI_PRINX IN (SELECT MI_PRINX FROM inserted)

END

Page 150: MapInfo Pro og SQL Server - Uden opgaver

Trigger der opretter stråtagssikkerhedszoner - I

Create TRIGGER dbo.trgBygningerStraataekt

ON dbo.Bygninger

AFTER INSERT,DELETE,UPDATE

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

If (not exists(SELECT * FROM inserted))

Begin -- records where deleted

-- vi sletter dem der blev slettet

Delete From dbo.StraataekSikkerhedszone

Where BYGN_ID In (Select MI_PRINX From deleted)

end

else

end...

Page 151: MapInfo Pro og SQL Server - Uden opgaver

Trigger der opretter stråtagssikkerhedszoner - II

...

Begin

if exists(SELECT * FROM deleted)

begin -- records where updated

If UPDATE(BYGNINGSTYPE)

Begin

-- ændringer i bygningstype, vi håndterer ændringer til/fra

-- ‘Bygning, stråtag’ I kolonnen BYGNINGSTYPE

Delete From dbo.StraataekSikkerhedszone

Where BYGN_ID In

(Select MI_PRINX From deleted

where BYGNINGSTYPE = 'Bygning, stråtag')

Insert into dbo.StraataekSikkerhedszone

(BYGN_ID, MACRO_ITEM, SP_GEOMETRY)

(Select MI_PRINX, 1, SP_GEOMETRY.STBuffer(200)

From inserted

Where BYGNINGSTYPE = 'Bygning, stråtag')

End

else

...

Page 152: MapInfo Pro og SQL Server - Uden opgaver

Trigger der opretter stråtagssikkerhedszoner - III

...

Begin

If UPDATE(SP_GEOMETRY)

Begin

-- opdatering af geometrien skal afspejles i zonen

Delete From dbo.StraataekSikkerhedszone

Where BYGN_ID In

(Select MI_PRINX From deleted

where BYGNINGSTYPE = 'Bygning, stråtag')

Insert into dbo.StraataekSikkerhedszone

(BYGN_ID, MACRO_ITEM, SP_GEOMETRY)

(Select MI_PRINX, 2, SP_GEOMETRY.STBuffer(200)

From inserted

Where BYGNINGSTYPE = 'Bygning, stråtag')

End

End

End

...

Page 153: MapInfo Pro og SQL Server - Uden opgaver

Trigger der opretter stråtagssikkerhedszoner - IV

else

begin -- records were inserted

If (exists(Select * from inserted

where BYGNINGSTYPE = 'Bygning, stråtag'))

Begin

-- nye poster blev indsat I tabellen bygninger

-- vi opretter zoner for dem med stråtag

Insert into dbo.StraataekSikkerhedszone

(BYGN_ID, MACRO_ITEM, SP_GEOMETRY)

(Select MI_PRINX, 4, SP_GEOMETRY.STBuffer(200)

From inserted Where BYGNINGSTYPE = 'Bygning, stråtag')

End

End

END

GO

Page 154: MapInfo Pro og SQL Server - Uden opgaver

Tilgå SQL Server via MapBasic

Page 155: MapInfo Pro og SQL Server - Uden opgaver

Process

• Opret tilslutning

nConn = Server_Connect("ODBC", "DSN=GIS;UID=EditUser;PWD=Edit")

• Gør ”noget”Server Create Map

Server Create Style

Server Create Table

Server Link Table

Register Table

Server Refresh

Server Set Map

Server_Execute

Commit Table

• Luk tilslutningServer nConn Disconnect

Page 156: MapInfo Pro og SQL Server - Uden opgaver

Server_Execute

• Du kan bruge Server_Execute funktionen til at sende SQL kommandoer

til udførsel i databasen

• Sikre dig at du har en tilslutning åben, her bruges tilslutning nr 1

Print Server_Execute(1, ”Drop table dbo.KOMMUNE”)

Print Server_Execute(1, ”Delete From MapInfo.MapInfo_MapCatalog

Where OWNERNAME = ’dbo’

and TABLENAME = ’KOMMUNE’”)

• OBS: Ovenstående skal stå på én linje pr. kommando

• Husk at erstatte ” og ’ i MapBasic –vinduet, hvís du kopieret

ovenstående fra en PowerPoint

Page 157: MapInfo Pro og SQL Server - Uden opgaver

MapBasic applikationer: Find DBMS

• Find DBMS er et lille værktøj som illustrerer hvordan en søgning kan

gøres via kald til en spatial database

• Værktøjet søger i en foruddefineret tabel i databasen ved hjælp af

tilslutning 1. Det kunne ændres til en specifik datakilde.

• Med værktøjet kan du indtaste en værdi, du ønsker en søge efter. Når

du trykker på Enter sendes SQL forespørgslen til database og

matchende værdier returneres og vises i dialogboksen

• Når du klikker på en af værdierne, markeres den tilsvarende post i

kortet og der zoomes hen til posten

• Bemærk at du også skal have tabellen åben i et kortvindue.

• De forskellige navne er angivet i konfigurationsfilen: FIND DBMS.ini

Page 158: MapInfo Pro og SQL Server - Uden opgaver

Find DBMS

Page 159: MapInfo Pro og SQL Server - Uden opgaver

MapBasic applikationer: TableRefresh

Tanken er at man installerer MapInfo Pro på en server eller en anden

computer, som kører om natten. Derefter opretter man et job på

computeren, som starter applikationen hver nat, hver søndag nat eller

lignende. Programmet søger så efter tabeller i den angivne mappe og

opdaterer dem, der skal og kan opdateres.

Programmet styres af opsætningsfilen, som bestemmer:

• i hvilken mappe, der skal søges efter tabeller

• om der skal søges i undermapper

• om DBMS-tabeller skal opdateres

• om WFS-tabeller skal opdateres

Page 160: MapInfo Pro og SQL Server - Uden opgaver

Tips

Page 161: MapInfo Pro og SQL Server - Uden opgaver

Spørgsmål & svar

Q Når jeg åbner en DBMS-tabel, får jeg at vide at tabellen er skrivebeskyttet?

A Sikre dig at du har rettigheder til at ændre i tabellen i databasen og at

tabellen har et entydigt primært indeks – for views skal denne kolonne

hedde MI_PRINX

Q Jeg får ikke valget mellem Oracle Spatial og ODBC?

A Du har enten ikke installeret understøttelse for Oracle Spatial (OCI) eller

også har du ikke en Oracle klient installeret

Q Min DBMS-tabel kan ikke blive vist i et kortvindue?

A Tabellen er sikkert ikke blevet registreret i kortkataloget. Gør den

kortlægningsklar først

Q Jeg har åbnet en DBMS-tabel og gjort den kortlægningsklar, men jeg kan

stadig ikke tilføje den til et kortvindue?

A Du skal genåbne tabellen fra databasen for at få MapInfo Professional til

at læse kortlægningsinformationerne fra kortkataloget

Page 162: MapInfo Pro og SQL Server - Uden opgaver

Spørgsmål & svar

Q Hvordan kan jeg se kolonnerne med koordinater i MapInfo Professional?

A Opret et view og tilføje disse kolonner to gange (en gang med et alias),

gør viewet kortlægningsklart og åbn så viewet i stedet for den

bagvedliggende tabel, se nærmere på næste side

Q Når jeg åbner min tabel kan jeg ikke redigere kortdataene. Jeg kan dog

redigere attributdataene?

A Dette problem kan skyldes at du har valgt en skrivebeskyttet kolonne til at

indeholde den rækkevis stil, for eksempel hvis kolonnen er breddere end

254 tegn

Q Jeg kan ikke uploade en tabel til databasen vha. Gem kopi som. Jeg har

slettet den gamle tabel i databasen?

A Tabellen findes måske allerede i kortkataloget. Du skal fjerne den fra

kortkataloget før du kan gemme den som.

Page 163: MapInfo Pro og SQL Server - Uden opgaver

Spørgsmål & svar

Q Jeg har lige oprettet kortkataloget via EasyLoader, men nu kan jeg ikke

angive at min tabel skal anvende rækkevis stil – denne mulighed er

inaktiv. Jeg har undersøgt at jeg har kolonne af typen varchar(254).

Hva’ nu?

A Hvis du havde en tilslutning åben til databasen i MapInfo

Professional da du oprettede kortkataloget med EasyLoader, skal

du nu lukke alle tilslutningr til databasen for at få MapInfo

Professional til at genopfriske sit “syn” på kortkataloget

Page 164: MapInfo Pro og SQL Server - Uden opgaver

Se koordinater i MapInfo Professional

• MapInfo “gemmer” kolonner med koordinater, når de oversættes til et

punkt

• For at få vist koordinaterne skal du oprette et view der

– Indeholder koordinaterne to gange

– Indeholder den primære indeks kolonne under navnet MI_PRINX

• Dette view kunne se således ud:

SELECT HOLE_ID, ID, LENGTH,

LOCATIONX, LOCATIONY, LOCATIONZ,

LOCATIONX As X, LOCATIONY As Y, ID As MI_PRINX

FROM dbo.DRILLHOLES

• Til sidst skal du gøre viewet kortlægningklart vha. kolonnerne X og Y

Page 165: MapInfo Pro og SQL Server - Uden opgaver

SQL Server tips

• Tools > Options

– Fjern flueben for ”Prevent saving changes that require table re-

creation”.

– Det gør det f.eks. muligt at ændre en kolonne fra nvarchar til varchar

Page 166: MapInfo Pro og SQL Server - Uden opgaver

Spørgsmål ?

The Power of Insight

MapInfo Professional

Peter Horsbøll Møller, Senior Systems Engineer

[email protected]