ToolSwitcher

Jeg deltog på museernes Arkæologisk GIS Forum på Lindholm Høje Museet i mandags.

En af deltagerne spurgte, hvorfor man ikke kunne tildele genvejstaster til værktøjerne i MapInfo Professional – ja han gjorde faktisk opmærksom på, at han gentagne gange havde bedt om denne mulighed.

Nu er der et stykke vej fra Aalborg til Sønderjylland, så det gav mig mulighed for at overveje, hvordan man kunne løse netop dette.

Den kendte løsning er, at man manuelt i menufilen (MapInfow.mnu)  tilføjer menupunkter for de værktøjer, som man ønsker en genvejsknap til. Problemet her er, at det skal man gøre hver gang, der kommer en ny version af MapInfo Professional.

Alternativt kan man lave et lille program, der kan gøre det for en. Det valgte jeg at gøre. Faktisk viste det sig at være nemmere en jeg havde troet.

I programmet starter jeg med at definere to menupunkter, som gør det muligt at skifte mellem en række værktøjer- Man skifter altså enten op eller ned i rækkefølgen. Jeg anvender Ctrl+Q til at vælge næste værktøj og Ctrl+Alt+Q til at vælge forrige værktøj. I koden kan man angive andre genvejstaster.

Create Menu "ToolSwitcher" As
"Switch to next tool" & Chr$(9) & "Ctrl+Q/W^Q"
  Calling MENUSwitchToNextTool,
"Switch to previous tool" & Chr$(9) & "Ctrl+Alt+Q/W^@Q"
  Calling MENUSwitchToPreviousTool,
"(-",
"End ToolSwitcher"
  Calling MENUEndProgram
Alter Menu ID 4 Add
  "ToolSwitcher" As "ToolSwitcher"

Vær opmærksom på, at det først er fra MapInfo Professional 10.0, at MapInfo Professional understøtter anvendelsen af mere end en Ctrl/Alt/Shift genvejstast ad gangen.
Efterfølgende definerer jeg en liste med de værktøjer, som jeg oftest anvender og som jeg derfor ønsker at kunne skifte i mellem.

Redim marrToolIDs(5)
marrToolIDs(1) = M_TOOLS_SELECTOR
marrToolIDs(2) = M_TOOLS_EXPAND
marrToolIDs(3) = M_TOOLS_SHRINK
marrToolIDs(4) = M_TOOLS_RECENTER
marrToolIDs(5) = M_TOOLS_PNT_QUERY

I procedurerne der kaldes af menupunkterne, vælges altså henholdsvis næste eller forrige værktøj fra listen. Her illustreret ved vælg næste værktøjs proceduren:

Sub MENUSwitchToNextTool

  If mnCurrentTool = Ubound(marrToolIDs) Then
    mnCurrentTool = 1
  Else
    mnCurrentTool = mnCurrentTool + 1
  End If

  Run Command "Run Menu Command " & marrToolIDs(mnCurrentTool)

End Sub

Meget simpel konstruktion. Programmet kan udvides med specifikke genvejstaster til nogle udvalgte værktøjer.
I kan hente program og sourcekoden her: ToolSwitcher

Peter

SelChangedhandler

MapBasic har nogle indbyggede procedurer, som kan blive kaldt, når en bruger (eller et program) laver en given handling i MapInfo Professional. Et eksempel på dette er SelChangedHandler proceduren, som kaldes, når brugeren vælger noget til eller fra i MapInfo Professional.

MapInfo-L efterlyste en bruger at Info-vinduet viste data for den aktuelt valgte post – og altså ikke kun når man brugte Info-værktøjet i kortet. Det kan man lave ved hjælp af SelChangedhandler proceduren.

Jeg lavede hurtigt et simpelt program, som viser hvordan dette kan gøres. Programmet og sourcekoden kan hentes her.

Kort fortalt har mit lille program blot en SelChangedHandler procedure, som kaldes hver gang brugeren vælger noget til eller fra i MapInfo Professional.

Her er koden i SelChangedhandler proceduren:

Sub SelChangedHandler

Dim nRowID As Integer

Set Handler SelChangedHandler Off

If CommandInfo(CMD_INFO_SELTYPE) = 1 Then
  nRowID = CommandInfo(CMD_INFO_ROWID)
  Set Window WIN_INFO
    Table SelectionInfo(SEL_INFO_TABLENAME) Rec nRowID
End If

Set Handler SelChangedHandler On

End Sub

Når proceduren kaldes starter jeg med at “deaktivere” SelChangeHandler proceduren, så den ikke ved et tilfælde kaldes fra min kode igen.

Derefter spørger jeg på hvilken “SELTYPE” der er tale om. Hvis “SELTYPE” er 1, har brugeren tilvalgt en post – i så fald kan jeg vise informationer for denne post i Info-vinduet. Dette gør jeg via Set Vindue kommandoen, hvor jeg referer til såvel tabellen (SelectionInfo(SEL_INFO_TABLENAME)), der er valgt fra, og den post (CommandInfo(CMD_INFO_ROWID)) brugeren har valgt.

Det er sådan set det.

Peter

Insights Danmark 2010 – program

Så er første foreløbige udgave af programmet for Insights Danmark 2010 klart. Se programmet her. Læs mere om konference på vores hjemmeside

Vi har om eftermiddagen tre spor: et helt spor med Encom Discover, et spor med desktop-produkter og et spor med Enterprise solutions. Der er med andre ord noget for en hver smag.

Så kom og se hvad der sker, få en snak med os, vores partnere og andre brugere. Vi har deltagelse fra vores engelske topfolk, som har fingrene på pulsen og ved hvad der sker.

Tilmeld dig via denne tilmeldingsside

Peter

En verden af data – en simpel løsning

Pitney Bowes Business Insight introducerer Geosk™, det mest effektive og den mest økonomiske måde at købe geografiske data. Du kan søge i og se alle tilgængelige datasæt, købe data per kvadratkilometer eller hele datasæt og downloade det med det samme.

Hvis du vil lære mere om vores nye Data-as-a-Service løsning, kan du deltage i et 20 minutters web-seminar.

Seminaret finder sted d. 26. august 2010 kl. 20.00 (dansk tid). Seminaret er på engelsk.

Tilmeld dig nu!

Insights Danmark 2010 opdateret program

Nu begynder der at komme mere indhold i programmet for Insights konferencen.

Konferencen afholdes på Scandic Hotel i Hvidovre.

Tirsdag d. 14. september

kl. 12.00 – 13.00: Frokost for deltagerne på seminar eller workshop
kl. 13.00 – 17.00: Seminaret “MapInfo Professional 8.5 – 10.5
kl. 13.00 – 17.00: Workshoppen “Introduktion til MapBasic” – medbring din egen bærbare
kl. 19.30 – 00.00: Uformel netværksmiddag

Onsdag d. 15. september

kl. 09.00 – 12.00: Der afholdes en række sessioner i plenum.
  • Kom og hør om nyhederne i MapInfo Professional 10.5 – Du vil blive INSPIREret!
  • Hvor er PBBI på vej hen?  – Følger produkterne med den vej?
kl. 12.00 – 13.00: Frokost
kl. 13.00 – 16.00: Konferencen deles op i 3 spor. Sessionerne vil bl.a. omfatte:
  • Bliv klogere på hvordan Encom Discover kan hjælpe dig med dine opgaver
  • MapInfo Stratus - Hvad er det og hvad har det med skyen at gøre?
  • Spectrum - Har du styr på din datakvalitet?
  • Hvad har Kalundborg Kommune brugt Encom Discover til?
  • Hør hvordan Rambøll anvender Encom Discover 3D i forbindelse med projekter indenfor forurenet jord og grundvand
  • Hvenegaard og Jens Bo Landinspektørerne vil fortælle om deres nye MapBasic-applikation, MapGO, til håndtering af grønne områder
  • Targit vil vise deres Business Intelligence løsning
  • Geograf vil fortælle om de nye muligheder for at tilgå offentlige registre og web tjeneste, bl.a. ny BBR
  • Hør om nyheder fra vores forhandlere

kl. 16.30 slutter konferencen
Der vil være pauser, hvor du kan netværke og få en snak med os og vores forhandlere.

  • Deltagelse på seminar/workshop d. 14. sept. koster DKK 400,- inkl. frokost og kaffepause.
  • Netværksmiddagen d. 14. sept. koster DKK 500,- inkl. drikkevarer.
  • Konferencedeltagelse d. 15. sept. er sat til DKK 750,- inkl. morgenbuffet, frokost og kaffepauser.

Alle priser er ekskl. moms.

Tilmeld dig allerede i dag >>>

Jeg håber, vi ses til konferencen!

Peter

Insigths 2010 Sponsorer

Hele verden med ét klik

MapInfo Professional 10.5 leveres som noget nyt med kort for hele verden som standard. Når du starter MapInfo Professional 10.5 kan du med et enkelt klik få åbnet et kort over hele verden. Vi har valgt at inkludere Microsoft Bing(tm) Maps i produktet, så man som bruger nemt kan få adgang til baggrundskort – lige meget hvor man måtte arbejde.

I brugerfladen kan man tilgå Microsoft Bing(tm) Maps enten via to nye knapper eller via to nye menupunkter i menuen Filer. Den først knap åbner for Microsoft Bing(tm) luftfoto og den anden åbner for Microsoft Bing(tm) hybrid, som også indeholder stednavne, vejnavne og vektorkort (stadig som raster).

Kortene leveres som kvadrater (tiles) fra en Tile Server og det betyder at hastigheden er rigtig god – noget  bedre end en almindelig WMS-service. Så længe MapInfo Professional kører, cacher den de kvadrater, den allerede har hentet. Det betyder bl.a. at den ikke altid behøver at hente data fra serveren, hvis den allerede har hentet dem. Når du afslutter MapInfo Professional vil de hentede kvadrater bliver slettet.

Da kortene hentes fra en internetbaseret tjeneste, er du nødt til at have adgang til internettet for at kunne bruge tjenesten. Til gengæld behøver der ikke at være tale om en speciel hurtig forbindelse.

Licensen til disse Microsoft Bing(tm) kort er tidsbegrænset, så hvis du ikke har en vedligeholdelsesaftale på MapInfo Professional eller løbende opgraderer til nyeste version, vil licensen til Microsoft Bing(tm) på et tidspunkt udløbe.

Læse og skrive konfigurationsfil

Noget man ofte har brug for, når man laver et “smart” mapbasic-program, er at kunne gemme og genindlæse udvalgte indstillinger for forvalgte værdier. Til dette formål er det en fordel nemt at kunne læse og skrive elementer til en konfigurationsfil (.ini).
En konfigurationsfil består ofte af grupper og nøgler, som vist nedenfor:

[vej]
tabel=veje
kolonne=vejnavn
[matrikel]
tabel=mat_reg
kolonne_mas_matrnr

Jeg har via .NET indkapslet WinAPI metoderne til at læse og skrive enkelte elementer i en sådan konfigurationsfil. Det giver mig den fordel, at jeg kan bruge disse metoder både fra .NET (som ellers helst læser og skriver indstillinger til XML-filer) og via MapBasic – forudsat at jeg anvender MapBasic og MapInfo Professional 9.5 eller nyere. En anden fordel ved at anvendes disse metoder, eller anvende WinAPI metoderne direkte, er at man kan læse og skrive enkeltstående nøgler – man behøver med andre ord ikke at genskrive hele konfigurationsfilen.

Jeg anvender ofte én procedure til at læse og én procedure til at skrive indstillingerne fra mine MapBasic-programmer. Er der tale om større komplekse programmer, kan selvstændige moduler i MapBasic-programmet også selv læse og skrive “egne” indstillinger.

I hovedmodulet til mit MapBasic-program definerer jeg ofte en konstant med navnet på konfigurationsfilen. Det kunne se således ud:

Define FILE_INI ApplicationDirectory$() & "indstillinger.def"

Navnet på konfigurationsfilen vil dog være det samme som navnet på MapBasic-programfilen, blot med filtypen .ini i stedet for .mbx.

Længere nede i mit program anvender jeg så mine .NET metoder til at indlæse konfigurationer. Hvis jeg f.eks. skal læse ovenstående konfigurationsfil, kan det se således ud:

msTabVeje = CONFIGReadKey(FILE_INI, "vej", "tabel")
msColVeje = CONFIGReadKey(FILE_INI, "vej", "kolonne")
msTabMatr = CONFIGReadKey(FILE_INI, "matr", "tabel")
msColMatr = CONFIGReadKey(FILE_INI, "matr", "kolonne")

Og når jeg skrive mine indstillinger kunne det se således ud:

Call CONFIGWriteKey(FILE_INI, "vej", "tabel", msTabVeje)
Call CONFIGWriteKey(FILE_INI, "vej", "kolonne", msColVeje)
Call CONFIGWriteKey(FILE_INI, "matr", "tabel", msTabMatr)
Call CONFIGWriteKey(FILE_INI, "matr", "kolonne", msColMatr)

Hvis du kunne have behov for at kune læse en konfigurationsfil i dit Mapbasic-program, kan du hente min implementering her: ConfigFileLib.

Husk at inkludere ConfigFileLib.def i de Mapbasic-moduler, hvor du har brug for at læse/skrive konfigurationer:

Include "ConfigFileLib.def"

God fornøjelse!

Peter

MapInfo netværksmøde i Roskilde

Der afholdes møde i MapInfo Netværket d. 2. september 2010 hos Miljøcenter Roskilde, Ny Østergade 7-11, 4000 Roskilde.

Dagsorden:
10.00 – 10.10 Velkomst, indledning og præsentation
10.10 – 11.30 Fortæller Miljøcenter Roskilde og Miljøcenter Nykøbing om nogle af miljøcentrenes anvendelse af MapInfo:

  • Nicolaj Lindeborgh – fra MC_Roskilde, Sø og maringruppen fortæller og viser fra ”Belastningskanonen” – Værktøj til udtræk af arealinformation (arealanvendelse, punktkilder mm) for et sø- eller vandløbsopland til et exelregneark.
  • Kenneth Ibsen- fra MC-Nykøbing fortæller og viser ”Spredt bebyggelse”. Spildevandsudledning fra ejendomme udenfor de kloakerede områder. En udviklingsmetode hvor oplysninger fra BBR sammenkædes med GIS-temaer og automatisk beregner, hvor meget spildevand, der udledes.
  • Anne Brylow – fra MC Roskilde fortæller om sagsbehandlingsdelen.

11.30 – 12.00 Stratus – MapInfo’s web-gis ved Kasper Saunders Bang, COWI
12.00 – 13.00 Frokost
13.00 – 13.40 MapInfo Professional værktøjer, ved Peter Horsbøll Møller, Pitney Bowes Business Insight
13.40 – 13.55 Debat-runde, ønsker til næste møde.
13.55 – 14.00 Afslutning

Tilmelding til Anne Lyngholm, COWI på akly@cowi.dk senest d. 20. august af hensyn til lokale og forplejning.

Deltagelse er gratis, dog skal der betales for forplejning. Der kan være begrænset med pladser, så først-til-mølle-princippet er gældende.

MapInfo netværksmøde i Århus

Der afholdes møde i MapInfo Netværket d. 1. september 2010 hos COWI i Århus, Jens Chr. Skous Vej 9, 8000 Århus C.

Dagsorden:
10.00 – 10.10 Velkomst, indledning og præsentation.
10.10 – 10.40 GIS i Miljøministeriet, organisation og opgaver for KMS, Herunder Vand- og naturplaner høringsfase og formidling. ved Bent Villadsen.
10.40 – 12.00 MapInfo Professional værktøjer, ved Peter Horsbøll Møller, Pitney Bowes Business Insight
12.00 – 13.00 Frokost
13.00 – 13.30 Stratus – MapInfo’s web-gis ved Mikkel Kappel, COWI
13.30 – 13.55 Debat-runde, ønsker til næste møde.
13.55 – 14.00 Afslutning

Tilmelding til Anne Lyngholm, COWI på akly@cowi.dk senest d. 20. august af hensyn til lokale og forplejning.

Deltagelse er gratis, dog skal der betales for forplejning. Der kan være begrænset med pladser, så først-til-mølle-princippet er gældende.

MapBasic Workshop – Insights Danmark 2010

Som tidligere annonceret afholder vi en MapBasic workshop tirsdag d. 14. sept. – dagen før selve brugerkonferencen Insights Danmark 2010.

Formålet med denne MapBasic workshop er at give en kort introduktion til hvordan man udvikler mindre MapBasic applikationer. Vi anbefaler at man selv medbringer en bærbar computer for på denne måde at kunne få “hands-on”. Workshoppen vil bestå af såvel lidt teori/gennemgang samt praktiske øvelser.

På workshoppen vil vi se nærmere på følgende elementer af MapBasic-sproget:

  • Grundliggende opbygning af MapBasic-programmer
  • Oprette menuer
  • Procedurer og funktioner
  • MapBasic funktioner til forespørgsel på tabeller og kolonner
  • Opbygning af mindre dialogbokse

På workshoppen vil vi lave et lille program, der kan analysere en udvalgt tabel og vise grundliggende informationer om tabellen i en dialogboks. Fuld eksempelkode til dette program vil blive udleveret.

Hvis du synes det lyder interessant, kan du tilmelde dig MapBasic workshoppen (og evt. Insights Danmark 2010 konferencen) her >>>.

Peter