Nyheder i MapBasic 10.5 og 11.0 MapBasic Udviklerdag 2011 Peter Horsbøll MøllerM Juni 2011
Program Nyheder i MapBasic 10.5 Nyheder i MapBasic 11.0
MapBasic 10.5: IDE MapBasic-editoren understøtter nu filer større end 64Kb Jeg vil dog fortsat anbefale, at man anvender en ekstern teksteditor og blot anvender MapBasic-kompilerennår programmet skal kompileres/linkes
MapBasic 10.5: Koordinatsystemer Oversætte MapBasic CoordSys til EPSG CoordSysStringToEPSG( ) Oversætte MapBasic CoordSys til element i projektionsfilen CoordSysStringToPRJ$( ) Oversætte MapBasic CoordSys til WKT CoordSysStringToWKT$( )
MapBasic 10.5: Kort, lag og labels Tilpasning af lagvisning Forespørge på StyleOverrideInfo(window_id, layer_number, override_index, attribute) Stort set samme attributter som lagdelen i LayerInfo() Sætte Set Map [ Window window_id ] Layer layer_id [[ Style ] Override Add [override_name] { [ Using [ Window window_id ] Layer layer_id { All Override { override_index override_name } }] Zoom ( min_zoom, max_zoom ) [ Units dist_units ]... [ Nodes { On Off } ] [ Symbol... ] [, Symbol... ]...... ]
MapBasic 10.5: Kort, lag og labels Tilpasning af labelvisning Forespørge på LabelOverrideInfo(window_id, layer_number, labeloverride_index, attribute) Stort set samme attributter som labeldelen i LayerInfo() Sætte Set Map [ Window window_id ] Layer layer_id [[ Label ] Override Add [labeloverride_name] { [ Using [ Window window_id ] Layer layer_id { All Override { labeloverride_index labeloverride_name } }] Zoom ( min_zoom, max_zoom ) [ Units dist_units ]... [ Enable { On Off } ] [ Font... ] [Pen... ] [ With label_expr ]... ]
MapBasic 10.5: Kort, lag og labels Forespørge på kombineret stil LayerStyleInfo(window_id, layer_number, override_index, pass_index, attribute ) STYLE_OVR _INFO_LINE STYLE_OVR _INFO_PEN STYLE_OVR _INFO_BRUSH STYLE_OVR _INFO_SYMBOL STYLE_OVR _INFO_FONT Et lag kan have en ret stil bestående af flere kombinerede linjer eller symbol, som vises ovenpå hinanden Sætte en kombineret stil for at lag Set Map [ Window window_id ] Layer layer_id [ Global Line [, Line ]] [ Global Pen [, Pen ]]...
MapBasic 10.5: Kort, lag og labels Forespørge pålag kan returnere svar om lagtilpasninger, labeltilpasning og kombinerede stile LayerInfo( window_id, layer_number, attribute) LAYER_INFO_OVR_STYLE_COUNT LAYER_INFO_OVR_LBL_COUNT LAYER_INFO_OVR_STYLE_CURRENT LAYER_INFO_OVR_LBL_CURRENT LAYER_INFO_OVR_LINE_COUNT LAYER_INFO_OVR_PEN_COUNT LAYER_INFO_OVR_BRUSH_COUNT LAYER_INFO_OVR_SYMBOL_COUNT LAYER_INFO_OVR_FONT_COUNT
MapBasic 10.5: Lagkontrol Forespørge på lagkontrollen LayerControlInfo ( attribute ) LC_INFO_SEL_COUNT Forespørge på valgte elementer i lagkontrollen LayerControlSelectionInfo ( selection_index, attribute ) LC_SEL_INFO_NAME LC_SEL_INFO_TYPE LC_SEL_INFO_TYPE_MAP LC_SEL_INFO_TYPE_LAYER LC_SEL_INFO_TYPE_GROUPLAYER LC_SEL_INFO_TYPE_STYLE_OVR LC_SEL_INFO_TYPE_LABEL_OVR LC_SEL_INFO_MAPWIN_ID LC_SEL_INFO_LAYER_ID LC_SEL_INFO_OVR_ID
Eksempel Include Menu.def '*************************************************************************** Sub Main '*************************************************************************** Alter Menu ID M_SHORTCUT_LC_LAYERS Add "Locate tab file" HelpMsg "Finds the selected tab file in Windows Explorer" Calling MENULocateTabFileLC End Sub 'Main
'******************************************************************************* Sub MENULocateTabFileLC '******************************************************************************* Dim nmid, nlayerid As Integer, stab, sfile As String If LayerControlInfo(LC_INFO_SEL_COUNT) <> 1 Then Note "Please select one layer in the Layer Control!" Exit Sub End If If LayerControlSelectionInfo (1, LC_SEL_INFO_TYPE) <> LC_SEL_INFO_TYPE_LAYER Then Note "Please select one layer in the Layer Control!" Exit Sub End If nmid nlayerid stab = LayerControlSelectionInfo(1, LC_SEL_INFO_MAPWIN_ID) = LayerControlSelectionInfo(1, LC_SEL_INFO_LAYER_ID) = LayerInfo(nMID, nlayerid, LAYER_INFO_NAME) Do Case LayerInfo(nMID, nlayerid, LAYER_INFO_TYPE) continues...
continued... Do Case LayerInfo(nMID, nlayerid, LAYER_INFO_TYPE) Case LAYER_INFO_TYPE_NORMAL sfile = TableInfo(sTab, TAB_INFO_TABFILE) Case LAYER_INFO_TYPE_GRID If Ask("Do you want to find the tab file or the grid file?", "Table", "Grid") Then sfile = TableInfo(sTab, TAB_INFO_TABFILE) Else sfile = RasterTableInfo(sTab, RASTER_TAB_INFO_IMAGE_NAME) End If Case LAYER_INFO_TYPE_IMAGE If Ask("Do you want to find the tab file or the raster file?", "Table", "Raster") Then sfile = TableInfo(sTab, TAB_INFO_TABFILE) Else sfile = RasterTableInfo(sTab, RASTER_TAB_INFO_IMAGE_NAME) End If Case Else Note "Please select a normal or raster/grid layer!" Exit Sub End Case Run Program "Explorer.exe /select," & sfile End Sub 'MENULocateTabFileLC
MapBasic 10.5: TableList Forespørge på TableList TableListInfo( attribute ) TL_INFO_SEL_COUNT Forespørge på valgte elementer i TableList TableListSelectionInfo( selection_index, attribute ) TL_SEL_INFO_NAME TL_SEL_INFO_ID
Eksempel Include Menu.def '*************************************************************************** Sub Main '*************************************************************************** Alter Menu ID M_SHORTCUT_TLV_TABLES Add "Locate tab file" HelpMsg "Finds the selected tab file in Windows Explorer" Calling MENULocateTabFileTL End Sub 'Main
'******************************************************************************** Sub MENULocateTabFileTL '******************************************************************************** Dim stab, sfile As String If TableListInfo(TL_INFO_SEL_COUNT) <> 1 Then Note "Please select one table in the TableList window!" Exit Sub End If stab = TableListSelectionInfo (1, TL_SEL_INFO_NAME) Do Case TableInfo(sTab, TAB_INFO_TYPE) continues...
continued... Do Case TableInfo(sTab, TAB_INFO_TYPE) Case TAB_TYPE_BASE, TAB_TYPE_FME, TAB_TYPE_LINKED sfile = TableInfo(sTab, TAB_INFO_TABFILE) Case TAB_TYPE_WFS, TAB_TYPE_WMS sfile = TableInfo(sTab, TAB_INFO_TABFILE) Case TAB_TYPE_IMAGE If Ask( Find the tab or the raster file?", "Table", "Raster") Then sfile = TableInfo(sTab, TAB_INFO_TABFILE) Else sfile = RasterTableInfo(sTab, RASTER_TAB_INFO_IMAGE_NAME) End If Case Else Note "Please select a non temporal table!" Exit Sub End Case Run Program "Explorer.exe /select," & sfile End Sub 'MENULocateTabFileTL
MapBasic 10.5: Menupaletter Placering af ikke-flydende menupalette Alter Buttonpad { Fixed Float Top Left Right Bottom } ] Create Buttonpad { Fixed Float Top Left Right Bottom } ] ButtonPadInfo( pad_name, attribute ) BTNPAD_INFO_DOCK_POSITION BTNPAD_INFO_DOCK_NONE BTNPAD_INFO_DOCK_LEFT BTNPAD_INFO_DOCK_TOP BTNPAD_INFO_DOCK_RIGHT BTNPAD_INFO_DOCK_BOTTOM
Eksempel Se det delte MapBasic modul T_TOOLBAR For at gemme og genindlæse en menupalettesposition kan du med fordel anvende det delte MapBasic modul TOOLBARLib: TOOLBARSetSettings(ByVal stoolbarname As String, ByVal stoolbarsettings As String) TOOLBARGetSettings(ByVal stoolbarname As String) As String TOOLBARLib anvende typen T_TOOLBAR Type T_TOOLBAR nwid sname nstate pposition nwidth bhidden End Type As Integer As String As Integer As T_MI_POINT As Integer As Logical
'***************************************************************************'' ' '***************************************************************************'' Sub ttbgetfromtoolbar(byval stoolbarname As String, ttba As T_TOOLBAR) Set Paper Units "cm" ttba.nwid ttba.sname = ButtonPadInfo(sToolbarName, BTNPAD_INFO_WINID) = stoolbarname If ButtonPadInfo(sToolbarName, BTNPAD_INFO_FLOATING) Then ttba.nstate = TOOLBAR_STATE_FLOATING Else If SystemInfo(SYS_INFO_MIVERSION) < 1050 Then ttba.nstate = TOOLBAR_STATE_DOCKED Else ttba.nstate = ButtonPadInfo(sToolbarName, BTNPAD_INFO_DOCK_POSITION) End If End If ttba.nwidth ttba.bhidden ttba.pposition.fx ttba.pposition.fy = ButtonPadInfo(sToolbarName, BTNPAD_INFO_WIDTH) = NOT WindowInfo(ttbA.nWID, WIN_INFO_OPEN) = ButtonPadInfo(sToolbarName, BTNPAD_INFO_X) = ButtonPadInfo(sToolbarName, BTNPAD_INFO_Y) End Sub
MapBasic 10.5: Tile Server understøttelse Oprette en tabel, der anvender en TileServer Create Table table Type TILESERVER TileType tile_type URL url AttributionText "attributiontext" [ Font font_clause] [ StartTileNum { 0 1 } ] [ Minlevel min_level ] MaxLevels max_level TileSize Height height [Width width] [ ReadTimeout read_time_out ] [ RequestTimeout request_time_out] CoordSys coordsys Understøtter ikke direkte WMTS, men kan gøre det hvis WMTS serveren overholder visse ting.
MapBasic 10.5: OLE Communication Nyt objectsom gør det muligt at docke vinduer i MapInfo Professional. Dog kan MapBasic dialogbokse ikke dockes DockWindow Object Et eksempel påanvendes ses i det opdaterede applikation Navngivne Visninger og i WindowHelper-værktøjet
MapBasic 10.5: Mindre ting Returnere navn på aktuel applikation ApplicationName$() Returnere sti til en række filtyper defineret under grundindstillinger GetPreferencePath$() PREFERENCE_PATH_TABLE PREFERENCE_PATH_WORKSPACE PREFERENCE_PATH_MBX PREFERENCE_PATH_IMPORT PREFERENCE_PATH_SQLQUERY PREFERENCE_PATH_THEMETHEMPLATE PREFERENCE_PATH_MIQUERY PREFERENCE_PATH_NEWGRID PREFERENCE_PATH_CRYSTAL PREFERENCE_PATH_GRAPHSUPPORT PREFERENCE_PATH_REMOTETABLE PREFERENCE_PATH_WFSTABLE PREFERENCE_PATH_WMSTABLE Returnere en beskrivelse af tabellen fra metadata TableInfo( table_id, TAB_INFO_DESCRIPTION)
MapBasic 11.0: Listevindue Forespørgse på et listevindue BrowserInfo( window_id, attribute) BROWSER_INFO_NROWS BROWSER_INFO_NCOLS BROWSER_INFO_CURRENT_ROW BROWSER_INFO_CURRENT_COLUMN BROWSER_INFO_CURRENT_CELL_VALUE
MapBasic 11.0: Integration med MapInfo Manager Forespørge på om eventuel integration med MapInfo Manager LibraryServiceInfo( attribute ) LIBSRVC_INFO_LIBSRVCMODE (1) LIBSRVC_INFO_LIBVERSION (2) LIBSRVC_INFO_DEFURLPATH (3) LIBSRVC_INFO_LISTCSWURL (4) Sætte URL til MapInfo Manager Set LibraryServiceInfo { URL url } Spørge om en tabel er administreret af MapInfo Manager TableInfo( table_id, attribute) TAB_INFO_ISMANAGED (41)
MapBasic 11.0: Biblioteksstier Læse aktuel sti til specifikke biblioteker, f.eks. mappen med tabeller GetCurrentPath$( current_path_id ) PREFERENCE_PATH_TABLE (0) PREFERENCE_PATH_WORKSPACE (1) PREFERENCE_PATH_MBX (2) PREFERENCE_PATH_IMPORT (3) PREFERENCE_PATH_SQLQUERY (4) PREFERENCE_PATH_THEMETHEMPLATE (5) PREFERENCE_PATH_MIQUERY (6) PREFERENCE_PATH_NEWGRID (7) PREFERENCE_PATH_CRYSTAL (8) PREFERENCE_PATH_GRAPHSUPPORT (9) PREFERENCE_PATH_REMOTETABLE (10) PREFERENCE_PATH_SHAPEFILE (11) PREFERENCE_PATH_WFSTABLE (12) PREFERENCE_PATH_WMSTABLE (13) Sætte sti til specifikke biblioteker Set Path current_path_id path Bruger de samme konstanter som GetCurrentPath$()
MapBasic 11.0: Biblioteksstier GetCurrentPath$()kontra GetPreferencePath$() GetCurrentPath$ returnerer den aktuelle sti, som måske er blevet ændret via Set Path kommandoen GetPreferencePath$() returnerer altid stien fra grundindstillingerne Set Pathpåvirker kun stierne i den aktuelle session. Disse vil altsåikke bliver gemt i grundindstillinger
MapBasic 11.0. Listevindue Mulighed for at tvinge en tilpasning af kolonne-bredde til aktuelt data-indhold: Set Browse [ Window window_id ] [ Grid { On Off } ] [ Row row_num ] [ Column column_num ] [ Columns Resize ]
MapBasic 11.0: Mindre ting Køre applikation skjult (uden at den vises i MRU-oversigten Run Application [ NoMRU ] file ForspørgepåUnik ID påtabeller tildeles når en tabel oprettes TableInfo( table_id, attribute) TAB_INFO_TABLEID (39) TAB_INFO_PARENTTABLEID (40)
Links Den danske PBBI blog: MapNetForum danmark.pbbiblogs.com forum.gis-hotel.dk MapInfo-L groups.google.com/group/mapinfo-l MI Pro træningssvideor: Planer for produkterne: MI Pro dokumentation: Download MapBasic: MI Pro prøveversion: www.pbinsight.com/support/training/video-tutorials roadmap.pbinsight.com/ www.pbinsight.com/support/product-documentation/details/mapinfo-professional www.pbinsight.com/support/product-downloads/for/mapbasic www.pbinsight.com/support/product-downloads/for/mapinfo-professional PBBI Location Intelligence Blog: Anden dokumentation: Anden download: li.pbbiblogs.com/ www.pbinsight.com/support/product-documentation/ www.pbinsight.com/support/product-downloads/
Spørgsmål? Peter Horsbøll Møller peter.moller@pb.com