MapBasic brugergruppe. Geografiske objekter. Peter Horsbøll Møller Senior Systems Engineer April 2013

Relaterede dokumenter
MapBasic hvad kan det bruges til? Insights Danmark 2011

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Click to edit title style. Få mere ud af dine kort. Tom Probert Peter Horsbøll Møller

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

MapInfo Professional v11.0 & The MapInfo Location Intelligence Suite MapInfo Netværksmøder

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Selection Udvælgelse. For at markere mere end en polygon, holdes Ctrl samtidig. Klik på næste polygon. Gentag for i alt 5 polygoner.

MapBasic brugergruppe. Introduktion til MapBasic. Peter Horsbøll Møller Senior Systems Engineer Januar 2013

MapInfo Professional v11.0 & v Februar 2012

Vilkår for brug GIS-Byggesag 1 af 48

Manual for installation og brug af Ad-aware version 2007

Views etc. Databaser

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Introduktion til programmering

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X & 10.8

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

En Kort Introduktion til Oracle

SmartAir TS1000. Daglig brug

MAPINFO PROFESSIONAL V11.5

Programmering for begyndere Lektion 2. Opsamling mm

Databaseadgang fra Java

Løsning af skyline-problemet

MapInfo Professional 11.0 Hvordan man tilgår en database

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

Workshop G3 MicroStation V8 XM edtion nye værktøjer 1

Ændringer i opsætning af GeoCAD-tabeller ved indførelsen af MIA3 og minimaks

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

DB undervisning 01-01

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

Hent filoplysninger fra billeder og filer

Ekstramateriale til Photoshop CS2

6. Regression. Hayati Balo,AAMS. 1. Nils Victor-Jensen, Matematik for adgangskursus, B-niveau 1

MapInfo Professional Dokumentation af nye funktioner

1. Basal select med (stjerne)

Interaktionsudvikling

Import af arealer / udstyr i vejman.dk

HTML, PHP, SQL, webserver, hvad er hvad??

Start SketchUp vælg File Open og åben filen Milimeters.skp under Templates

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Screening af forureningsrisiko. Data- og GIS-udfordringer ved kompleks datasammenstilling PB Insights, den 19. september 2013 John Pedersen / Orbicon

Brug af de danske koordinatsystemer

BRUGERVEJLEDNING TIL MOVIA WEBGIS

Introduktion til SQL queries

MapInfo Professional Seminar

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Help / Hjælp

Opret en bruger, der kan hente gratis programmer fra Autodesk

CAD-tegninger som grundlag for geometri

IFC Egenskaber. Mohammad Hussain Parsianfar s BYG DTU

Vejledning i brug af WFS fra Kortforsyningen i MapInfo

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

1. Generelt om WFS Opsætning Eksempler... 6

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Vester Kopi A/S - Plotservice

Opgaver til Maple kursus 2012

Dannelse af PDF-dokumenter

Stilarter, rapporter, m.m.

SQL Server 2008 Spatiale eksempler. Plan & Miljø, GIS

Skriftlig opgave. Designtanker i database-nære systemer

Opgaver om koordinater

Tips og Tricks. Erik Wendelboe Nielsen Christian Woergaard. econocap. PTC/USER Fredericia

Færdig. Ansvarlig mm. Type. Beskrivelse. Opfølgning. Sagsbehandler. Mikael Wolf/GLXKOM/DK. Alt. sagsbeh. CSE-BYS CSE-VKD GLX-KD. Forv. / afd.

GPS-Link version Brugervejledning Dansk Sejlunion

Tegn med GPS 1 - Vejledning

The Design Diaries Project 3 2. Semester. Blog om designprincipper

Kapitel 4 Løkker i C#

GIS. Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net

! #!! $ % $! & " &'"! & *+ "! " $ $ ""!,-! $!.! $! " # 1!! &' "

Database programmerings tips

Data lagring. 2. iteration (implement backend)

SQL Server 2016 Data Adgang

MsSQL: Basal performance tuning, part 1

Få navn på analysenr. i excel-fil og ind i pivottabel med data fra qlikview

Det sprogpædagogiske kørekort 2012/2013. Modul 4: Videofiler (basis)

Dannelse af PDF dokumenter

Transkript:

MapBasic brugergruppe Geografiske objekter Slå mute fra hvis I vil sige eller spørge om noget Peter Horsbøll Møller Senior Systems Engineer April 2013

Program MapBasic IDE som udviklingsværktøj Geografiske objekter i tabeller Object-variabel Alias-variabel Læse og skrive geografiske fra/til en tabel Koordinatsystem Læse information fra et geografisk objekt Beregne værdier fra objekter Geografiske operatorer Oprette geografiske objekter Oprette afledte geografiske objekter Forskel, fælles og forening Ændre et eksisterende objekt Finde skæringspunkter Spørgsmål og svar

MapBasic IDE Hent den her: http://mustafaozcetin.wordpress.com/mapbasic/mapbasicide-en/ Et gratis udviklingsmiljø til MapBasic som dog kræver MapInfo MapBasic for at få kompileret kildekoden til en applikation Udviklet af en tredjepart, Mustafa Özçetin En væsentlig forbedring i forhold til standard MapBasic editoren Et alternativ til andre tredjeparts teksteditorer, som kan konfigureres til MapBasic udvikling En ny v1.4 RC1 er nu tilgængelig via ovenstående link

Geografiske objekter i tabeller Geografiske objekter i tabeller gemmes i OBJ-kolonnen Du skal altså referere til OBJ-kolonnen, når du vil læse eller skrive de geografiske objekter fra/til en tabel På disken gemmes disse i.map-filen, som kobles sammen med de alfanumeriske data via.id-filen

Object-variabel En object-variabel kan referere til et geografisk objekt af en vilkårlig type Object-variable er som udgangspunkt ikke initialiseret og skal derfor tildeles en værdi før du refererer til dem. Dim opolyline As Object **Åh åh, her begår vi en fejl **Objektet er endnu ikke tildelt en værdi!! **Runtime fejl ikke fejl ifm. kompilering!! If ObjectInfo(oPolyline, OBJ_INFO_TYPE) = OBJ_TYPE_PLINE Then End if

Object-variabel En object-variabel består af flere information end blot geografien Udover geografien består den også af en stil Object-variabel x, y [x, y ] [...] Stil Den geografiske del kan man få fat på med en række geografiske funktioner - ObjectGeography(), ObjectNodeX/-Y og ObjectInfo() - og stilen kan man få fat på med funktionen ObjectInfo()

Alias-variabel En Alias-variabel peger på en kolonne i en tabel. Den anvendes f.eks. til at læse værdier fra en tabel, hvor tabel- og/eller kolonnnavnet er gemt i en streng-variabel. Det er altså ikke hårdtkodet i programmet Værdien for Alias-variabel sættes til kombinationen af et tabelnavn og et kolonnenavn: Rene variable tabel- og kolonnenavne acolumn = table_name &. & column_name Variabel kolonnenavn, hårdtkodet tabelnavn acolumn = TABELNAME. & column_name Variabel tabelnavn, hårdtkodet kolonnenavn acolumn = table_name &.KOLONNENAVN

Alias-variabel Dim aobj As Alias, opolyline As Object aobj = Selection.OBJ Fetch First From Selection If aobj Then opolyline = aobj End if

Læse geografiske objekter fra en tabel Brug som udgangspunkt en alias-variabel aobj = Selection.OBJ Kontroller om posten/posterne har geografiske objekter, enten i det du refererer den specifikke post If aobj Then End if opolyline = aobj eller via en forespørgsel, som udelukke poster uden geografi Select * From MIN_TABEL Where OBJ Into MIN_TABEL_GEO NoSelect Bruger du sidstnævnte metode kan du udelade Alias-variablen opolyline = MIN_TABEL_GEO.OBJ

Skrive geografiske objekter til en tabel Afhængig af behov skal du bruge enten Insert eller Update kommandoerne, som vi så på sidste gang. Insert indsætter nye poster: Insert Into MIN_TABEL (OBJ) Values (opolyline) Update opdaterer eksisterende poster: Update MIN_TABEL Set OBJ = opolyline Where ROWID = nrowid Husk enten at opdatere selection (en enkelt post) eller bruge Where begrænsningen, så du ikke opdaterer alle poster i din tabel med samme objekt!!

Koordinatsystem Husk altid at angive et koordinatsystem inden du læser koordinater fra et geografisk objekt eller sætter koordinater på et geografisk objekt Gør du ikke dette, kan du næsten være sikker på at ende et forkert sted i verden Brug kommandoen: Set CoordSys... Refererer eventuelt til en eksisterende åben tabel eller et kortvindue.

Eksempler Tabellen MIN_TABEL, som selvfølgelig er kortlægningsklar!! Set CoordSys Table MIN_TABEL Det aktive (kort)vindue Set CoordSys Window FrontWindow() UTM Zone 32 ETRS89 Set CoordSys Earth Projection 8, 115, 7, 9.0, 0, 0.9996, 500000, 0

Læse information fra et geografisk objekt Som tidligere nævnt kan du bruge en række funktioner til at læse information fra et geografiske objekt, herunder: ObjectInfo(): Generel information om objektets type, stil og bestanddele ObjectGeography (): De geografiske bestanddel, så som centroid, koordinatafgrænsning, koordinater fra linjer mm. ObjectNodeX()/-Y(): Koordinater fra de enkelte knuder i polylinjer og regioner CentroidX()/-Y(): Centroid-koordinater for objektet MBR(): Objektets mindste omskrevne firkant

Eksempel: Er første eller sidst knude nærmest? fshortestdistance = 1000000 'meters For nsegment = 1 To ObjectInfo(oExisting, OBJ_INFO_NPOLYGONS) For i = 1 To 2 If i = 1 Then nnode = 1 Else End If nnode = ObjectInfo(oExisting, OBJ_INFO_NPOLYGONS + nsegment) fdistance = Distance(fX, fy, ObjectNodeX(oExisting, nsegment, nnode), ObjectNodeY(oExisting, nsegment, nnode), "m") If fdistance < fshortestdistance Then fshortestdistance = fdistance nsegmentnearest = nsegment nnodenearest = nnode End If Next 'i Next 'nsegment

Beregne værdier fra objekter Der findes også en række funktioner til at afgøre størrelser på geografiske objekter, så som: Area(), Cartesian-(), Spherical-(): Objects areal Perimeter(), Cartesian-(), Spherical-(): Objektets omkreds ObjectLen(), Cartesian-(), Spherical-(): Objektets længde Distance(), Cartesian-(), Spherical-(): Afstand mellem to koordinatsæt

Geografiske operatorer De geografiske operatorer, som man måske kender fra MapInfo Professionals SQL valg, kan også anvendes på geografiske variable Intersects Within, Partly Within, Entirely Within Contains, Contains Part, Contains Entire Man kan bruge disse til at afgøre om to objekter interagerer geografisk If opolyline1 Intersects opolyline2 Then De berører hinanden Else De berører ikke hinanden End if

Oprette geografiske objekter MapBasic-sproget indeholder en lang række funktioner og kommandoer til at oprette geografiske objekter: CreateCircle( ) CreateLine( ) CreatePoint( ) CreateText( ) Create Arc Create Ellipse Create Frame Create Line Create Object Create Pline Create Point Create Rect Create Region Create RoundRect Create Text Create Multipoint Create Collection

Eksempler oline = CreateLine(fX1, fy1, fx2, fy2) Create Line Into Variable oline (fx1, fy1) (fx2, fy2) Pen CurrentLinePen() Create Pline Into Variable opline 3 (fx1, fy1) (fx2, fy2) (fx3, fy3) Create Region Into Variable opline 4 (fx1, fy1) (fx2, fy2) (fx3, fy3) (fx1, fy1) Pen CurrentBorderPen() Brush CurrentBrush()

Oprette afledte geografiske objekter Man kan også oprette geografiske objekter, som tager udgangspunkt i eksisterende geografiske objekter. Her er nogle eksempler: Buffer(), Cartesian-(), Sperical-(): Opret en buffer omkring et objekt MBR(): Opretter den mindste omskrevne firkant omkring et objekt Centroid(): Henter centroiden fra et objekt Offset(), Cartesian-(), Sperical-(): Forskyder et objekt x enheder i en retning OffsetXY(), Cartesian-(), Sperical-(): Forskyder et objekt i XY ConvexHull(): Laver et ConvexHull (elastik) objekt omkring knuder i et objekt ExtractNodes(): kan bruges til at trække delelementer ud af polylinjer og polygoner

Forskel, fælles og forening Man kan også beregne forskels-, fælles- og foreningsobjektet ud fra to inputobjekter: Forskel: Erase( source_object, eraser_object ) Fælles: Overlap( object1, object2 ) Forening: Combine( object1, object2 ) Bemærk at for Erase() har paramternes rækkefølge væsentlig betydning for resultatet

Ændre et eksisterende objekt Man kan med kommandoen Alter Object ændre et objekt på en lang række punkter, herunder objektets stil, knudepunkter og/eller centroid Syntax Alter Object object_variable { Info object_info_code, new_info_value Geography object_geo_code, new_geo_value Node } { Add [ Position polygon_num, node_num ] ( x, y ) Set Position polygon_num, node_num ( x, y ) Remove Position polygon_num, node_num } Med Info og Geography kan man sætte de værdier man kan læse med ObjectInfo() og ObjectGeography() Med Node kan man tilføje, ændre og slette knudepunkter

Eksempel: Tilføje og slette et knudepunkt -------------------- Alter Object oexisting Node Add Position nsegmentnearest, nnodenearest ( fx, fy ) Update Selection Set OBJ = oexisting -------------------- Alter Object oexisting Node Remove Position nsegment, nnode Update Selection Set OBJ = oexisting

Finde skæringspunkter MapBasic har også nogle funktioner, som kan hjælpe med at identificere hvor/hvorledes to objekter skærer hinanden Syntax IntersectNodes( object1, object2, points_to_include ) object1 and object2 are object expressions; may not be point or text objects. points_to_include is one of the following SmallInt values: INCL_CROSSINGS returns points where segments cross. INCL_COMMON returns end-points of segments that overlap. INCL_ALL returns points where segments cross and points where segments overlap.

MapBasic Udviklerdag Afholdes d. 26. juni 2013 kl. 10 16 i DGI-byen i København lige op og ned ad Hovedbanegården Vi efterlyser: Ønsker til indlæg? Ønsker til workshops? Indlægsholdere? Giver gratis deltagelse! Gode ideer og forslag til at gøre det til en udbytterig dag for jer?

Spørgsmål? Peter Horsbøll Møller peter.moller@pb.com www.pitneybowes.dk/software Husk: Som medlemmer af MapBasic brugergruppen har I mulighed for at sende spørgsmål til mig via e-mail

Links Den danske PBSoftware blog: PBBI Location Intelligence Blog: danmark.pbbiblogs.com li.pbbiblogs.com/ MapInfo-L groups.google.com/group/mapinfo-l MI Pro træningssvideoer: Planer for produkterne: Download MapBasic: MI Pro prøveversion: www.pbinsight.com/support/training/video-tutorials roadmap.pbinsight.com/ www.pbinsight.com/support/product-downloads/for/mapbasic www.pbinsight.com/support/product-downloads/for/mapinfo-professional MI Pro dokumentation: Anden dokumentation: Anden download: www.pbinsight.com/support/product-documentation/details/mapinfo-professional www.pbinsight.com/support/product-documentation/ www.pbinsight.com/support/product-downloads/