Mapinfo地图转换成GoogleEarth地图的方法(可编辑修改word版)
mapbasic学习之-将mapinfo图导入googleearth图源代码
' Mapinfo2Google.mb ver 1.2.1 8th August, 2005' Copyright ?2005 by Cy Carter' Sydney, Australia'' Mapinfo2Google converts MapInfo layers in a map window to a Google Earth KML file.' Supports point, line, polyline, region, rectangle and text object types.' ARC and ELLIPSE (circle) objects are not supported and are skipped' Object style information extracted but not currently used. Use Google Earth client instead. '' Inspired by Eric Frost's (Oct 2000) MapInfoSVGConverter.mb' and Bill Thoen's MI2SVG.mb' See for Google Earth documentation'' This program is free software; you can redistribute it and/or modify' it under the terms of the GNU General Public License as published by' the Free Software Foundation; either version 2 of the License, or' (at your option) any later version.'' This program is distributed in the hope that it will be useful,' but WITHOUT ANY WARRANTY; without even the implied warranty of' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the' GNU General Public License for more details.'' You should have received a copy of the GNU General Public License' along with this program; if not, write to the Free Software Foundation,'-----------------------------------------------------------------------------------------Include "MapBasic.Def"Declare Sub MainDeclare Sub MnuHelpDeclare Sub MnuAboutDeclare Sub MnuExitDeclare Sub SetMsgWinDeclare Sub MnuKML_ConvertMapDeclare Sub KML_ConvertMap (ByVal nMap As Integer, ByVal sOutputFile As String)Dim sErrorMsg As StringSub MainCreate Menu "&Mapinfo2Google" As"&Convert map window to KML file..." Calling MnuKML_ConvertMap,"(-","&Help" Calling MnuHelp,"&About Mapinfo2Google..." Calling MnuAbout,"E&xit Mapinfo2Google" Calling MnuExitAlter Menu Bar Add "&Mapinfo2Google"End Sub'-------------------- Menu Routines -------------------------------------Sub MnuAboutNote "Mapinfo to Google Earth Map Converter" & Chr$(10) & Chr$(10)& "Mapinfo2Google.mbx" & Chr$(10)& "Version 1.2.1 (8th August, 2005)" & Chr$(10)& "Copyright ?2005 by Cy Carter" & Chr$(10)& "This is free software distributed under the terms of the GNU General" & Chr$(10) & "Public License. See /licenses/licenses.html"End Subsub MnuHelpNote "HELP for program Mapinfo2Google " & Chr$(10) & Chr$(10)& "Exports all visible layers except Rasters, Cosmetic or Thematic " & Chr$(10)& "from the current map window to a Goggle Earth KML file." & Chr$(10) & Chr$(10) & "Use Labels of a BASE table to assign a name to each object if required." & Chr$(10) & "Only objects with centroid within the map window are exported." & Chr$(10) End SubSub MnuExitEnd ProgramEnd Sub'-----------------------------------------------------------'Ensure the message window is visible'-----------------------------------------------------------Sub SetMsgWinDim X,Y As FloatDim Xm, Ym As FloatDim Wm, Hm As FloatSet Paper Units "in"X = WindowInfo(WIN_MAPINFO, WIN_INFO_WIDTH) - 3Y = WindowInfo(WIN_MAPINFO, WIN_INFO_HEIGHT) - 3Xm = WindowInfo(WIN_MESSAGE, WIN_INFO_X)Ym = WindowInfo(WIN_MESSAGE, WIN_INFO_Y)Wm = WindowInfo(WIN_MESSAGE, WIN_INFO_WIDTH)Hm = WindowInfo(WIN_MESSAGE, WIN_INFO_HEIGHT)If NOT (WindowInfo(WIN_MESSAGE, WIN_INFO_OPEN)) thenXm = XYm = YWm = 2.5Hm = 2.5End If' fix window if required else leave it as user set itSet Window MessagePosition (Minimum(Xm,X), Minimum(Ym,Y))Width Maximum(2.5, Wm)Height Maximum(2.5, Hm)End Sub'------------------------------------------------------------' Perform reality checks, get user parameters and convert the' map window into an KML file.'------------------------------------------------------------Sub MnuKML_ConvertMapDim sKMLfile As StringDim nWin As IntegerDim StartTime As Integer'Get a map window idIf NumWindows() = 0 ThenNote "You must have a map window open."Exit SubEnd IfnWin = FrontWindow()If WindowInfo (nWin, WIN_INFO_TYPE) <> WIN_MAPPER ThenNote "The top window must be a map."Exit SubEnd If'Window must not be maximized or have scrollbars' If WindowInfo (nWin, WIN_INFO_STATE) <> WIN_STATE_NORMAL Then ' Note "Map window must not be minimised or maximised."' Exit Sub' End If'Nor can the map window have scrollbars on' If MapperInfo (nWin, MAPPER_INFO_SCROLLBARS) Then' Note "Scrollbars must be turned off."' Exit Sub' End If''Get the KLM output filename from the usersKMLfile = FileSaveAsDlg ( ApplicationDirectory$(),"mapinfo2Google", ".kml", "Output file name:")If sKMLfile = "" ThenExit SubEnd If'open message window'StartTime = Timer()print Chr$(12)Print "mapinfo layers to Google KML:"'Convert the map window to KML file.Call KML_ConvertMap (nWin, sKMLfile)If sErrorMsg <> "" ThenPrint sErrorMsgPrint "Program aborted!"ElsePrint PathToFileName$( sKMLfile ) +" is exported!"' Print "Finished! (" + STR$(Timer() - StartTime + 1) + " secs)"End IfEnd Sub'-------------------- Definitions ----------------------------'KML public functionsDeclare Sub KML_WriteHeader (ByVal h As Integer, ByVal fMinX As Float, ByVal fMinY As Float, ByVal fMapWidth As Float, ByVal fMapHeight As Float)Declare Sub KML_ConvertLayer (ByVal nMap As Integer, ByVal nLayer As Integer, ByVal h As Integer)Declare Sub KML_ConvertPoint (ByVal h As Integer, ByVal objPoint As Object, ByVal nId As Integer, ByVal sStyle As String)Declare Sub KML_ConvertLine (ByVal h As Integer, ByVal objLine As Object, ByVal nId As Integer, ByVal sStyle As String)Declare Sub KML_ConvertPline (ByVal h As Integer, ByVal objPline As Object, ByVal nId As Integer, ByVal sStyle As String)Declare Sub KML_ConvertRegion (ByVal h As Integer, ByVal objRegion As Object, ByVal nId AsInteger, ByVal sStyle As String)Declare Sub KML_ConvertText (ByVal h As Integer, ByVal objText As Object, ByVal nId As Integer, ByVal sStyle As String)Declare Sub KML_ConvertRect (ByVal h As Integer, ByVal objFeature As Object, ByVal nId As Integer, ByVal sStyle As String)'Private definitionsDefine SCREEN_DPI_RESOLUTION 96Define XRANGE 90000 ' used for LookAt range calcDefine YRANGE 130000Define STY_POINTS 1Define STY_LINES 2Define STY_POLYGONS 3Define STY_TEXT 4'KML private functionsDeclare Sub KML_GetWinSize (ByVal nMap As Integer, nWidth As Integer, nHeight As Integer) Declare Sub KML_GetMapLimits (ByVal nMap As Integer, fMinX As Float, fMinY As Float, fMaxX As Float, fMaxY As Float)Declare Sub KML_WriteFeatureVectors (ByVal h As Integer, ByVal objFeature As Object, ByVal nId As Integer, ByVal sStyle As String)Declare Function KML_GetGlobalStyles (ByVal nMap As Integer, ByVal nLayer As Integer, sStyles(4) As String) As LogicalDeclare Function KML_GetRegionStyle (ByVal brushStyle As Brush, ByVal penStyle As Pen) As StringDeclare Function KML_GetPenStyle (ByVal penStyle As Pen) As StringDeclare Function KML_GetSymStyle (ByVal symStyle As Symbol) As StringDeclare Function KML_GetTextStyle (ByVal fontText As Font) As StringDeclare Function KML_Color (ByVal nColor As Integer) As String'Module-scope globalsDim m_sFormat As String 'pattern for formatting coordinatesDim m_fPixelWidth As Float 'width of one pixel in map unitsDim goSelRegion As Object 'map window region'----------------------------------------------------------------------'Creates an KML file of map features in visible layers of a map window.'----------------------------------------------------------------------Sub KML_ConvertMap (ByVal nMap As Integer, 'Map window idByVal sOutputFile As String) 'KML output fileDim h As Integer 'file handle for output text fileDim nWidth, nHeight As IntegerDim fMaxX, fMaxY, fMinX, fMinY As FloatDim fMapWidth, fMapHeight As FloatDim i, j As IntegerDIm sOldCoordSys As String' sOldCoordSys = MapperInfo (nMap, MAPPER_INFO_COORDSYS_CLAUSE)'' Set Map Window nMap CoordSys Earth Projection 1, 104 ' set map to Lat/Long WGS 84'' Set CoordSys Earth Projection 1, 104 ' set Mapbasic calcs to same'' Print MapperInfo (nMap, MAPPER_INFO_COORDSYS_NAME)'' If MapperInfo (nMap, MAPPER_INFO_COORDSYS_CLAUSE) = "CoordSys Earth Projection 1, 104" Then'' m_sFormat = "0.######"'' Else'' Print "Try turning off RASTER layers!"'' sErrorMsg = "FATAL ERROR: Map not in LAT/LONG (WGS 84)"'' Note sErrorMsg'' Exit Sub'' End If'Get the window size in pixels. Assume screen resolution of 96 dpi.)Call KML_GetWinSize (nMap, nWidth, nHeight)'Determine the map limitsCall KML_GetMapLimits (nMap, fMinX, fMinY, fMaxX, fMaxY)fMapWidth = fMaxX - fMinXfMapHeight = fMaxY - fMinYm_fPixelWidth = fMapWidth/nWidth'Open the output KML fileh = 1Open File sOutputFile For Output As #h'Write the KML headerCall KML_WriteHeader (h, fMinX, fMaxY, fMapWidth, fMapHeight)'Get the total number of layersj = MapperInfo (nMap, MAPPER_INFO_LAYERS)'Convert map features in the layers. Step from lowest to highest'so that they will be displayed in the right order.For i = j To 1 Step -1If (LayerInfo (nMap, i, LAYER_INFO_DISPLAY) <> LAYER_INFO_DISPLAY_OFF)AND (LayerInfo (nMap, i, LAYER_INFO_TYPE) = LAYER_INFO_TYPE_NORMAL) Then'Convert the layer features to KMLCall KML_ConvertLayer (nMap, i, h)End IfNext'Write the KML end tag and close the filePrint #h, "</Document>"Print #h, "</kml>"Close File #h' Set Map Window nMap sOldCoordSysEnd Sub'-----------------------------------'Determine the window size in pixels'-----------------------------------Sub KML_GetWinSize (ByVal nWin As Integer, 'Map window idnWidth As Integer, 'Returned window width in pixelsnHeight As Integer) 'Returned window height in pixelsDim nResolution As Integer'Set the screen resolutionnResolution = SCREEN_DPI_RESOLUTIONSet Paper Units "in"'Get the window dimensions in pixelsnWidth = Int(WindowInfo(nWin, WIN_INFO_WIDTH) * nResolution)nHeight = Int(WindowInfo(nWin, WIN_INFO_HEIGHT) * nResolution)End Sub'--------------------------------------------------------------'Return the window limits in terms of map units.'--------------------------------------------------------------Sub KML_GetMapLimits (ByVal nMap As Integer, 'Map window idfMinX As Float, 'Returned min X of map windowfMinY As Float, 'Returned min Y of map windowfMaxX As Float, 'Returned max X of map windowfMaxY As Float) 'Returned max Y of map window'Get the map limitsfMaxX = MapperInfo(nMap, MAPPER_INFO_MAXX)fMaxY = MapperInfo(nMap, MAPPER_INFO_MAXY)fMinX = MapperInfo(nMap, MAPPER_INFO_MINX)fMinY = MapperInfo(nMap, MAPPER_INFO_MINY)' Make temporary selection objectCreate Region Into Variable goSelRegion1 4 (fMaxX,fMaxY) (fMaxX,fMinY) (fMinX,fMinY) (fMinX,fMaxY)End Sub'--------------------------'Writes the KML file header'--------------------------Sub KML_WriteHeader (ByVal h As Integer, 'Output KML file handleByVal fMinX As Float, 'X-coord of W edge of mapByVal fMaxY As Float, 'Y-coord of S edge of mapByVal fMapWidth As Float, 'Map width in map unitsByVal fMapHeight As Float) 'Map height in map unitsPrint #h, "<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>" Print #h, "<kml xmlns=""/kml/2.0"">"Print #h, "<Document>"Print #h, "<name>Mapinfo Import</name>"Print #h, " <Style id=""polystyle"">"Print #h, " <LineStyle>"Print #h, " <color>ff7faaff</color>"Print #h, " </LineStyle>"Print #h, " <PolyStyle>"Print #h, " <fill>0</fill>"Print #h, " </PolyStyle>"Print #h, " </Style>"Print #h, " <Style id=""textstyle"">"Print #h, " <IconStyle>"Print #h, " <Icon></Icon>"Print #h, " </IconStyle>"Print #h, " <LabelStyle>"Print #h, " <color>ff0000ff</color>"Print #h, " </LabelStyle>"Print #h, " </Style>"End Sub'----------------------------------------------------------------'Write all the map features to the KML file. This supports only a 'limited selection of MapInfo features and styles.'----------------------------------------------------------------Sub KML_ConvertLayer (ByVal nMap As Integer, 'Map window idByVal nLayer As Integer, 'Layer idByVal h As Integer) 'Output KML file handleDim sStyles(4) As StringDim bStyleOvr As LogicalDim sLayer As StringDim aRow, aObj As AliasDim objA As ObjectDim i, j As IntegerDim nObjType As IntegerDim sStyle As StringDim sName As StringDim nRow As IntegerDim bLables As LogicalDim bMoreLbls As LogicalDim nObj As IntegerDim nObjSkip As IntegerDim bLblOn As Logical'Check for style override and get the default object styles bStyleOvr = KML_GetGlobalStyles (nMap, nLayer, sStyles)'Get layer Table namesLayer = LayerInfo (nMap, nLayer, LAYER_INFO_NAME)'Use the Message window to inform the user of our progress Print "Layer:" + sLayerIf NOT TableInfo(sLayer,TAB_INFO_MAPPABLE) ThenPrint " Skipped - not mappable"Exit SubEnd IfbLblOn = FALSEIf LabelFindFirst(nMap, nLayer, TRUE) ThenIf TableInfo(sLayer, TAB_INFO_TYPE) = TAB_TYPE_BASE thenPrint " Using Label for Object name"bLblOn = TRUESet Map Window nMapLayer nLayer Label Visibility On Auto On Overlap On Duplicates OnUpdate Window nMapElse' PARTIAL WORKAROUND - mapbasic LabelFindByID function does not work correctly on QUERY tables' a possible solution is to iterate the QUERY labels then FETCH the object from the BASE tablePrint " Not a BASE table: Labels were ignored"End IfEnd If'Initialize alias variablesaObj = sLayer + ".obj"aRow = sLayer + ".rowid"'Start an KML folder to contain the layer featuresPrint #h, "<Folder>"Print #h, "<name>Layer " & sLayer & "</name>"nObj = 0nObjSkip = 0'Convert each feature in the layerFetch First From sLayerDo While Not EOT(sLayer)nRow = aRow ' read rowid from layer TABLEobjA = aObj ' get map object from layer TABLEsStyle = ""OnError GoTo No_ObjectnObjType = ObjectInfo (objA, OBJ_INFO_TYPE)OnError GoTo 0if nObjType > 0 thenif objA Within goSelRegion then'--------------------'object inside window'--------------------sName = ""If bLblOn Thenif LabelFindByID(nMap, nLayer, nRow, "", TRUE) thensName = ObjectInfo(LabelInfo(nMap, nLayer, LABEL_INFO_OBJECT),OBJ_INFO_TEXTSTRING)end ifend if'----------------------' Convert object to KML'----------------------Do Case nObjTypeCase OBJ_TYPE_ARCnObjSkip = nObjSkip + 1'-------------------------Case OBJ_TYPE_ELLIPSEnObjSkip = nObjSkip + 1'-------------------------Case OBJ_TYPE_LINECall KML_ConvertLine (h, objA, nRow, sName)'-------------------------Case OBJ_TYPE_PLINECall KML_ConvertPline (h, objA, nRow, sName)'-------------------------Case OBJ_TYPE_POINTCall KML_ConvertPoint (h, objA, nRow, sName)'-------------------------Case OBJ_TYPE_REGIONCall KML_ConvertRegion (h, objA, nRow, sName)'-------------------------Case OBJ_TYPE_RECTCall KML_ConvertRect (h, objA, nRow, sName)'-------------------------Case OBJ_TYPE_ROUNDRECTCall KML_ConvertRect (h, objA, nRow, sName)'-------------------------Case OBJ_TYPE_TEXTCall KML_ConvertText (h, objA, nRow, sStyle)'-------------------------End CasenObj = nObj + 1End IfEnd IfFetch Next From sLayer 'now get next objectLoop'---- end of layer ----------If nObjSkip > 0 thenPrint " Objects Skipped = " + STR$(nObjSkip) + " (ARC or CIRCLE)" End IfPrint " Objects Converted = " + STR$(nObj - nObjSkip)Print #h, "</Folder>"Exit SubNo_Object:nObjtype = 0Resume NextEnd Sub'---------------------------------------------------------------------'Converts a MapInfo point object to KML.'---------------------------------------------------------------------Sub KML_ConvertPoint (ByVal h As Integer, 'Output KML file handleByVal objPoint As Object, 'MI point objectByVal nId As Integer, 'Row IdByVal sName As String) 'LabelDim fx, fy As FloatDim symPoint As Symbolfx = ObjectGeography (objPoint, OBJ_GEO_POINTX)fy = ObjectGeography (objPoint, OBJ_GEO_POINTY)' If sStyle = "" Then' symPoint = ObjectInfo (objPoint, OBJ_INFO_SYMBOL)' sStyle = KML_GetSymStyle (symPoint)' End IfIf sName = "" thensName = "Point " + Str$(nId)End IfPrint #h, "<Placemark>"Print #h, " <name>"Print #h, " <![CDATA[" + Left$(sName,50) + "]]>"Print #h, " </name>"Print #h, " <LookAt>"Print #h, " <longitude>" & Format$(fx, m_sFormat) & "</longitude>"Print #h, " <latitude>" & Format$(fy, m_sFormat) & "</latitude>"Print #h, " <range>1000</range>"Print #h, " <tilt>0</tilt>"Print #h, " <heading>0</heading>"Print #h, " </LookAt>"Print #h, " <Point>"Print #h, " <coordinates>" & Format$(fx, m_sFormat)& "," & Format$(fy, m_sFormat)& ",0</coordinates>"Print #h, " </Point>"Print #h, "</Placemark>"End Sub'---------------------------------------'Converts a MapInfo line object to KML'---------------------------------------Sub KML_ConvertLine (ByVal h As Integer, 'Output KML file handleByVal objLine As Object, 'MI line objectByVal nId As Integer, 'Row IdByVal sName As String) 'LabelDim penLine As PenDim fx, fy As FloatDIM fxe, fye As FloatDim sStr As StringDim nRnge As IntegerDim sStyle As StringIf sStyle = "" ThenpenLine = ObjectInfo (objLine, OBJ_INFO_PEN)sStyle = KML_GetPenStyle (penLine)End Iffx = ObjectGeography (objLine, OBJ_GEO_LINEBEGX)fy = ObjectGeography (objLine, OBJ_GEO_LINEBEGY)fxe = ObjectGeography (objLine, OBJ_GEO_LINEENDX)fye = ObjectGeography (objLine, OBJ_GEO_LINEENDY)nRnge = Int(Maximum(Abs(fx-fxe)*XRANGE,Abs(fy-fye)*YRANGE))If sName = "" thensName = "Line " + Str$(nId)End IfPrint #h, "<Placemark>"Print #h, " <name>"Print #h, " <![CDATA[" + Left$(sName,50) + "]]>"Print #h, " </name>"Print #h, " <LookAt>"Print #h, " <longitude>" & Format$((fx+fxe)/2, m_sFormat) & "</longitude>" Print #h, " <latitude>" & Format$((fy+fye)/2, m_sFormat) & "</latitude>" Print #h, " <range>" & Str$(nRnge) & "</range>"Print #h, " <tilt>0</tilt>"Print #h, " <heading>0</heading>"Print #h, " </LookAt>"Print #h, " <LineString>"Print #h, " <coordinates>"Print #h, " " + Format$(fx, m_sFormat) & "," & Format$(fy, m_sFormat) & ",0" Print #h, " " + Format$(fxe, m_sFormat)& "," & Format$(fye, m_sFormat)& ",0" Print #h, " </coordinates>"Print #h, " </LineString>"Print #h, "</Placemark>"End Sub'---------------------------------------'Writes MI polyline objects to KML file.'---------------------------------------Sub KML_ConvertPline (ByVal h As Integer, 'Output KML file handleByVal objPline As Object, 'MI polyline objectByVal nId As Integer, 'Row IdByVal sName As String) 'LabelDim penPline As PenDim sStyle As StringIf sStyle = "" ThenpenPline = ObjectInfo (objPline, OBJ_INFO_PEN)sStyle = KML_GetPenStyle (penPline)End IfIf sName = "" thensName = "Polyline " + Str$(nId)End IfCall KML_WriteFeatureVectors (h, objPline, nId, sName)End Sub'------------------------------------'Outputs a MapInfo region as KML'------------------------------------Sub KML_ConvertRegion (ByVal h As Integer, 'Output KML file handle ByVal objRegion As Object, 'MI region objectByVal nId As Integer, 'Row IdByVal sName As String) 'Label' Dim penRegion As Pen' Dim brushRegion As Brush'' If sStyle = "" Then' 'Get style from object' penRegion = ObjectInfo (objRegion, OBJ_INFO_PEN)' brushRegion = ObjectInfo (objRegion, OBJ_INFO_BRUSH) ' sStyle = KML_GetRegionStyle (brushRegion, penRegion) ' End IfIf sName = "" thensName = "Region " + Str$(nId)End IfCall KML_WriteFeatureVectors (h, objRegion, nId, sName) End Sub'---------------------------------'Writes MI text object to KML file'---------------------------------Sub KML_ConvertText (ByVal h As Integer, 'Output KML file handleByVal objText As Object, 'MI text objectByVal nId As Integer, 'Row IdByVal sStyle As String) 'KML styleDim fx, fy As FloatDim sText As StringDim fSize As Float' Dim fontText As Font' If sStyle = "" Then' fontText = ObjectInfo (objText, OBJ_INFO_TEXTFONT)' sStyle = KML_GetTextStyle (fontText)' End Iffx = ObjectGeography (objText, OBJ_GEO_MINX)fy = ObjectGeography (objText, OBJ_GEO_MINY)sText = ObjectInfo (objText, OBJ_INFO_TEXTSTRING)fSize = ObjectGeography (objText, OBJ_GEO_MAXY) - ObjectGeography (objText, OBJ_GEO_MINY)Print #h, "<Placemark>"Print #h, " <name>"Print #h, " <![CDATA[" + Left$(sText,50) + "]]>"Print #h, " </name>"Print #h, " <LookAt>"Print #h, " <longitude>" & Format$(fx, m_sFormat) & "</longitude>"Print #h, " <latitude>" & Format$(fy, m_sFormat) & "</latitude>"Print #h, " <range>1000</range>"Print #h, " <tilt>0</tilt>"Print #h, " <heading>0</heading>"Print #h, " </LookAt>"Print #h, " <styleUrl>#textstyle</styleUrl>"Print #h, " <Point>"Print #h, " <coordinates>" & Format$(fx, m_sFormat)& "," & Format$(fy, m_sFormat)& ",0</coordinates>"Print #h, " </Point>"Print #h, "</Placemark>"End Sub'----------------------------------------------'Writes RECT and ROUNDEDRECT to KML file.'----------------------------------------------Sub KML_ConvertRect (ByVal h As Integer, 'Output KML file handleByVal objFeature As Object, 'Rect objectByVal nId As Integer, 'Row IdByVal sName As String) 'LabelDim fx, fy, fx0, fy0, fx1, fy1 As FloatDim nRnge As Integerfx0 = ObjectGeography (objFeature, OBJ_GEO_MINX)fy0 = ObjectGeography (objFeature, OBJ_GEO_MINY)fx1 = ObjectGeography (objFeature, OBJ_GEO_MAXX)fy1 = ObjectGeography (objFeature, OBJ_GEO_MAXY)nRnge = Int(Maximum(Abs(fx0-fx1)* XRANGE, Abs(fy0-fy1)* YRANGE))If sName = "" thensName = "Rect " + Str$(nId)End IfPrint #h, "<Placemark>"Print #h, " <name>"Print #h, " <![CDATA[" + Left$(sName,50) + "]]>"Print #h, " </name>"Print #h, " <LookAt>"Print #h, " <longitude>" & Format$((fx0+fx1)/2, m_sFormat) & "</longitude>" Print #h, " <latitude>" & Format$((fy0+fy1)/2, m_sFormat) & "</latitude>" Print #h, " <range>" & Str$(nRnge) & "</range>"Print #h, " <tilt>0</tilt>"Print #h, " <heading>0</heading>"Print #h, " </LookAt>"Print #h, " <styleUrl>#polystyle</styleUrl>"Print #h, "<Polygon>"Print #h, " <outerBoundaryIs>"Print #h, " <LinearRing>"Print #h, " <coordinates>"Print #h, " " + Format$(fx0, m_sFormat)& "," & Format$(fy0, m_sFormat)& ",0" Print #h, " " + Format$(fx1, m_sFormat)& "," & Format$(fy0, m_sFormat)& ",0" Print #h, " " + Format$(fx1, m_sFormat)& "," & Format$(fy1, m_sFormat)& ",0" Print #h, " " + Format$(fx0, m_sFormat)& "," & Format$(fy1, m_sFormat)& ",0" Print #h, " " + Format$(fx0, m_sFormat)& "," & Format$(fy0, m_sFormat)& ",0" Print #h, " </coordinates>"Print #h, " </LinearRing>"Print #h, " </outerBoundaryIs>"Print #h, "</Polygon>"Print #h, "</Placemark>"End Sub。
基站信息导入Google earth(包括扇区信息)
基站扇区导入Google Earth目录1.1软件准备 (3)1.2插件安装 (3)2.1制作基站信息地图 (4)2.2制作基站天线角度信息 (10)3.1导入至Google earth (13)1.1软件准备电脑上必须安装MapInfo、Google Earth软件、SiteSee.mbx和Mapinfo2Google.mbx插件如图1所示图11.2插件安装1.将Mapinfo2Google.mbx和sitesee.mbx复制到MapInfo的安装目录Tools文件夹下2.运行MapInfo软件,添加Mapinfo3Google插件图23.同理安装SiteSee插件安装完成后如上所示。
2.1制作基站信息地图1、打开基站信息Exel文件。
2、选择如下操作。
3、选择数据类型。
4、完成后出现下表,证明导入成功。
5、创建基站图标。
6、设置基站图标7、查看基站位置分布。
8、添加基站信息备注9、完成效果图。
(本图标识了基站名和信道号,有特殊需要请自行设置参数)2.2 转换文件导入到Google earth1、运行MapInfo2Google插件。
2、选择文件存储路径2.2制作基站天线角度信息1、打开含有基站天线角度信息的Exel文件。
将数值类型改成如下图所示。
2、运行sitesee插件3、设置站点信息。
4、保存为MapInfo文件5、出现效果图后,运行MapInfo2Google插件导出为Google earth文件。
3.1导入至Google earth打开Google earth,文件-打开,选择刚生成的*.xml文件,就可在地图上查看标注出的基站了。
效果图如下。
谢谢!。
MapInfo到GoogleEarth的通道(GELink工具)
MapInfo到GoogleEarth的通道(GELink工具)MapInfo到 Google Earth的通道Google这个后起之秀是越来越火了,自从Google推出了Earth 之后,很多人都开始“玩儿转地球”了。
很多GIS软件公司发现后院起火之后非但没有打算救火,而是希望借着这个火“开灶做饭”,于是都推出了有关Google Earth的工具,有的是应用结合,有的是数据交换。
MapInfo在去年就推出了他的工具:GELink,名字很有他的风格,跟ArcLink 差不多。
功能实际上也是差不多的。
主要是将MapInfo的数据转换成Google Earth能打开的kml,同时把属性数据也转换过去,对于其他的比如专题地图,可以通过覆盖栅格图的方式输出到Google Earth中。
当然,对于没有闲钱购买plus或者professional的人来说,绘制线和面确实是一个诱人的月亮,使用GELink可以让你有机会摘到它。
好了,现在告诉你你从哪里能够获得GELink/doc/0d9787260.html,/smartupdate/h tml/pro8.0.cfm在这个页面中有链接可以下载到这个工具,下载后是一个扩展名为EXE的自解压的压缩文件,解压后包含四个文件的安装包。
点击setup.exe进行安装,默认是将程序安装到MapInfo Professional所在目录的tools子目录中。
这个工具是一个使用MapBasic编写的工具,虽然是使用MapBasic7.8编译的,但需要在Professional 8.0上运行,所以你要使用这个工具就必须有MapInfo Professional 8.0。
在MapInfo Professional的工具菜单->运行MapBasic程序菜单项打开对话框,可以在上面所说的目录中找到GELink.mbx这个文件,选中单击确定按钮以运行这个程序。
运行之后,我们会发现在地图菜单的最下方出现一个新的菜单项,从这个菜单项中可以看到三个子菜单项。
mapinfo图转geomap图的操作流程
m a p i n f o图转g e o m a p图的操作流程原mapinfo图件是由各个图层组成的,每个图层又由tab、id、map、mid格式组成。
在将该mapinfo图件转换为geomap图件之前,要将其在mapinfo软件中将其转换为mif格式。
1、打开mapinfo软件,单击“文件”菜单下的-“打开”,打开目标mapinfo图件的某一图层的*.tab文件。
2、在mapinfo中打开该图层后,单击“表格”菜单下的“输出”,输出当前图层,生成*.mif 文件。
3、依次操作,直至所有图层都转换为mif格式。
4、打开geomap图形转换工具,单击其“数据”菜单下的“mapinfo数据导入”,选择目标mif文件,然后单击“打开”,即可将该图层导入到图形转换工具中。
然后单击“文件”菜单下的“另存为”,指定保存位置,即可将转换所得的geomap图件存放到指定的位置。
5、依次操作,直至所有mif格式的图层都转换为geomap格式。
6、将该mapinfo图件中任一geomap图层,导入到图册中,做为图件。
将该图件打开,然后在图层处右键单击,选择导入图层,将其它各层导入到当前图件中,然后按坐标叠合,即可将所有图层合并为同一图件中。
Mapinfo图件发现问题分析与处理在对mapinfo图件做图形转换为geomap图件后发现,一旦将图层接坐标叠合,总是有图层上图元消息。
经查看其坐标发现,不同图层所在图幅范围不一致。
最后发现,该问题出现在mapinfo的tab文件中。
例如9-2储层含油饱和度(19)图件,里面的井位和井位边框图层为用户坐标图件,而等值线和等高值等图层为经纬度坐标。
从而另存出的mif文件的坐标信息就是不一致的。
解决方法:1、将图件在mapinfo中打开,然后单击“文件”菜单下的“另存为”,然后选择需要另存的图层,然后单击“另存为(save as、、)”按钮。
2、在弹出的窗口中选择另存文件位置,单击投影(projection)按钮,在弹出的投影类型窗口中选择与井位边框一致的投影类型,然后单击“ok”:输入XY最大、最小值。
网优Mapinfo&GoogleEarth图层制作文档-by Jayjiang
Mapinfo、Google Earth图层制作版权所有侵权必究修订记录目录1Mapinfo创建站点 (1)1.1主要内容 (1)1.2操作步骤 (1)2基站扇区图层制作 (5)2.1主要内容 (5)2.2制作方法 (6)3Google Earth (10)4图层制作 (10)3.1主要内容 (10)3.2制作方法 (10)5后记 (13)1Mapinfo创建站点1.1主要内容利用mapinfo软件创建站点,在图层上显示站点名。
1.2操作步骤1)将已知的工参表进行整理,新建EXCEL表,数据整理如下图:2)新建一空白文本文档如“长沙站点图层”,将上表的数据全部复制到文本文档中3)打开mapinfo软件,在文件菜单中打开新建的文本文档:如下图:4)打开新建的文本文档后,会提示让你选择文件字符集等信息,如下图:5)点击确定,如下图:6)在菜单栏“表”里选择“创建点”7)创建点时可以根据个人喜好修改符号样式:8)在弹出的7540:OPS对话框中点击“继续”9)右键“图层控制”勾上黄色列:10)点击确定,显示出基站站点分布图及站点名,打开长沙图层后,整体效果如下图:2基站扇区图层制作2.1主要内容利用MapInfo插件sitesee制作基站扇区图层。
2.2制作方法在制作图层过程中,我们所需数据为工程参数,所以对数据的前期准备,此文档不介绍。
1)打开Mapinfo插件Seesite2)点击菜单中的“see site”再点击下级菜单中的“制作基站扇形数据”:3)打开已按格式制作好的工参表,注意:工参为95~03版本的EXCEL文件,基站表的EXCEL数据必须在与SeeSite.mbx同个目录的文件夹“\TAB”中:如:工具 SeeSite.mbx 目录:D:\Mapinfo\SeeSite.MBX 表 RFcon.xls 目录:D:\Mapinfo\TAB\RFcon.xls附:工参表格式样本以及Seesite插件程序。
MapGIS地图应用系列之玩转Google地图
MapGIS地图应用系列(二)--玩转Google地图随着数据共享、服务共享在GIS行业势头越来越热,各大地图供应商相继推出在线地图服务,而行业应用的开发者也更倾向于以google、雅虎、百度、必应等地图作为地图,在线调用,结合自己的行业应用,以达到用户体验和功能实用性的双丰收,本篇文章旨在介绍怎样在MapGIS的web开发中使用第三方的在线地图服务,以google 为例。
要在WebGIS开发中使用google地图,首先需要获取google在线地图服务的地址(可以借助火狐浏览器的firebug或者IE9浏览器),其地址获取方式如下(以火狐浏览器为例):方法(一):(1)安装firebug,并启用firebug组件,此时会在地址栏旁边生成一个小甲虫图标,打开火狐浏览器,打开任意地方的google地图浏览(例如武汉),点击小甲虫图标,并启用地图搜索功能搜索武汉,此时会在下方显示一系列http请求的地址,如图所示:(2)将鼠标停靠在地址上,会显示256*256的网格中的一张图片,根据图片判读,找到自己想要显示的区域的,右键--复制地址,可以将地址复制到浏览器地址栏,回车浏览下,检查是不是自己想要的区域,如下图所示:(3)例如,获取到的包括了大部分武汉区域的地址(这里地图类型是普通的矢量瓦片地图类型,也可以是其他类型)为/vt/lyrs=m@189000000,highlight:0x342ea8915476d8a1:0xa6 da2c1d87d542ca@1|style:maps&hl=zh-CN&gl=CN&src=app&x=837&y=420&z= 10&s=Gal,此时,就可以在我们的Flex应用程序中显示武汉地区的google基本地图了,具体做法为代码如下:<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="/mxml/2009"xmlns:s="library:///flex/spark"xmlns:mx="library:///flex/mx" minWidth="955"minHeight="600"xmlns:map="zdims.map.*" xmlns:othermap="zdims.othermap.*"><s:layout><s:BasicLayout/></s:layout><fx:Script><![CDATA[import zdims.othermap.GoogleLayerType;]]></fx:Script><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处--></fx:Declarations><map:IMSMap id="mapContainer" x="192" y="132" width="506" height="234" levelNum="15"xMinMap="-20037508.3427892" xMaxMap=" 20037508.3427892" yMinMap="-20037508.3427892" yMaxMap="20037508.3427892" ><othermap:GoogleTileLayer id="google" x="163" y="77" googleLayerType="{GoogleLayerType.BasicMap}"originalRow="420" originalColumn="837" startLevel="10" ></othermap:GoogleTileLayer></map:IMSMap></s:Application>参数说明如下:红色部分是google所使用的投影坐标系下,对应于经纬度(-180,180)(-90,90)的换算范围,是固定值,无论显示那个区域的地图,这个值不需要变。
Mapinfo2Google操作说明
Mapinfo2Google操作说明Mapinfo2Google主要功能是把MAPINFO软件里的图层转换成GOOGLE能打开的KML文件格式。
包括点,线条,区域都可以。
需要先在电脑上安装GOOGLE EARTH软件与Mapinfo2Google插件。
插件如下:一、插件管理其实要把工具加载到MAPINFO里,选择“工具”里面的“工具管理器”,如下图所示:在弹出的“工具管理器”窗口里选择“增加工具”按钮,再在弹出的“增加工具”窗口里分别填写好‘标题’,选择好插件放置的‘位置’后。
按“确定”按钮即可。
如下图所示:按完“确定”按钮后,工具就加载进去了,加载后要记得在“工具管理器”窗口里刚才加载的工具后面“已装入”与“自动装入”框内打勾。
下次打开Mapinfo后就会自动把这个工具加载进去。
再按“确定”键,应该能在菜单栏能看到多了一个“Mapinfo2Google”和选项。
即代表加载插件成功。
其它MAPINFO插件的加载也是用同样的方法来操作。
二、插件使用在MAPINFO里有一个事先画好的区域图层需要转换成GOOGLE文件(即KML格式),如下图红色区域所示。
下面以此为例来说明一下操作步骤:1、先关闭所有图层,然后再打开需要转换的图层(说明:之所以需要先关闭再打开,是因为用这个工具转换的时候窗口不能最大化,打开是什么样子就是什么样子,不要做任何操作,直接在Mapinfo2Google菜单下选第一个转换为KML的选项即可)。
打开后的效果如下图所示:2、打开需要转换的图层后,不要做其它操作,直接选择菜单栏里”Mapinfo2Google”下的”Convert map window to KML file…”即可。
如下图所示:4、点击保存按键后,MAPINFO右下角会有一个消息窗口提示转换完成。
如下图所示:5、可以在保存的路径下找到对应的文件,扩展名是.KML。
如下图所示:6、如果电脑上已经安装好了GOOGLE EARTH软件,直接双击该文件即可打开。
MapInfo数据与Google Earth数据转换
MapInfo数据与Google Earth数据转换
任山君;王琪;杨少敏
【期刊名称】《大地测量与地球动力学》
【年(卷),期】2010(030)B11
【摘要】分析了GIS数据格式与KML数据格式的差异性和数据转换的技术瓶颈,提出了解决方案和总体设计方法。
并以GIS中最常用的Maplnfo数据格式为例,利用MapBasic语言在Maplnfo平台上进行二次开发,编写一个数据转换插件,基本实现了MapInfo到KML格式的数据转换。
【总页数】3页(P75-77)
【作者】任山君;王琪;杨少敏
【作者单位】中国地震局地震研究所,武汉430071
【正文语种】中文
【中图分类】P208
【相关文献】
1.基于Google Earth及Mapinfo数据转换获取蓄水工程水面面积方法的研究 [J], 王超;秦向南;张丽;赵茹
2.MapInfo数据在Google Earth表达的初步研究 [J], 段金荣;刘凯;徐东坡;张敏莹;施炜纲
3.应用GISOffice和Coord将平面直角坐标系数据转换并输出为可导入GoogleEarth的Kml文件 [J], 丁沛
4.MapInfo数据与Google Earth数据转换 [J], 任山君;王琪;杨少敏
5.运用Google Earth和MapInfo建立县级血吸虫病防治地理信息数据库 [J], 张标; 周云; 洪青标; 孙乐平
因版权原因,仅展示原文概要,查看原文内容请购买。
Google地图转换MapInfo地图方法
Google地图转换MapInfo地图⽅法Goog I e地图转换Map I nfo地图⽅法-CAL-FENGHAL-(YICAI)-Company Or⼀.软件准备1) Google Earth Pro3)载Google地图1>打开Google Earth Pro软件,登录后,在左上⾓"飞到〃中输⼊地区名,⽐如“桂林”。
FcoTL WUJUJ.SiRC:?⼕mi 飞到灵垂」埜1F|y to 1/50 * Mew York. MY桂林____________________ v Q ,搜索后在主窗⼝中显⽰桂林地图。
调整右上⾓⽅向与缩放⼯具,可进⾏相应浏览操作。
可再次在"飞到〃中输⼊更细的地区名,⽐如〃创新⼤厦⽓童两丹⼆电世UJ5iRCcom搜索后在主窗⼝中显⽰创新⼤厦附近区域的地图。
2、制作地标。
点击“添加〃图标,选择“地标"菜单。
地图中出现⼀个浮动地标。
同时出现⼀个"Google Earth-New"**框。
可显⽰当前地标对应的经纬度。
经度:⼙花轴I移动浮动地标,杯框中的经纬度会发⽣相应改变。
经夏:110.337s选好点,点击"确定",浮动地标将固定下来。
此处命名为"Ptl 〃。
在“确定“前请务必先记下Ptl 的经纬度数值,因为在地图配准时要⽤到的。
Untitled 地标 |此处单位为?。
如果不是,可以在“⼯具」设置〃中修改。
莖现叫 ifa逝気曲通僵⼯具.桌⾖⼆具GPS 定住宅影制作播族 ?rUA设置…此处请务必把单位设定为否则会严重影响后续步骤的操作。
在"Google Earth 设置"*框的"3D 显⽰"选项卡中,找到"显⽰经纬度选项",选择"Decimal Degrees"。
am⾄少做两个地标,不设上限,地标越多地图配准越精确。
精准电子地图简易制作教程
精准电子地图简易制作教程来源:原创作者:feiyudz 浏览:37次日期:04-12本文配合专门视频教程,讲解利用GoogleEarth软件生成MapInfo格式电子地图的步骤。
Tips1:本方法可用于几公里乃至十几公里半径区域的电子地图制作。
Tips2:小区域范围里可以把经纬线看成是直线。
Tips3:jpg格式图片下载完成之前都不要关闭GoogleEarth,GetScreen只是调用GoogleEarth 但不能独立运行!Tips4:Windows图片像素坐标以左上角顶点为原点,向右为x轴正方向,向下为y轴正方向。
Tips5:所有地图,包括电子地图的方向顺序是:上北下南,左西右东。
Tips6:如果你做出来的区域地图明显不是矩形显示的,那么你还是重新再做一遍吧!因为你的地图肯定没有配准好坐标!!先来看看视频教程。
PS:由于还要开屏幕录软件,以及好久没整理系统的原因,录像里的程序运行会显得比较慢。
另:我是刚刚才摸索出的这种方法,所以操作起来不是很熟练,也出现了一些误操作,然后多了些改正的环节。
因为上传容量有限制,录像是经过高倍压缩的,有点模糊,但配合着下文的文字解说应该就没问题了。
我晚点试着重新压制或重新录制,看能不能换个更清晰更简洁的版本。
一、软件准备。
1、Google Earth Pro 4.2.0205.5730参考下载地址::8080/系统工具/系统其他/0510/Google%20Earth%20Pro%204.2.0205.5730.rar可能是网站代码的问题,大家注意要把从“http”开始到“.rar”的整个链接都拷全了,才能下到正确的文件哦!PS:我用的是这个版本。
换成5.0就不行了。
可能需要升级GetScreen吧。
细节自己研究。
2、GetScreen参考下载页面:我自己用的这个版本的软件我忘了下载地址,但这里有相关介绍,也许有点帮助。
另:如果无法运行,请务必安装net framework后再试。
在GoogleEarth上显示基站图层的制作方法
在Google Earth上显示基站图层的制作方法一.什么是Googl e Earth谷歌地球(Google Earth,GE)是一款Google公司开发的虚拟地球仪软件,它把卫星照片、航空照相和GIS布置在一个地球的三维模型上。
Google Earth于2005年向全球推出,被“PC 世界杂志”评为2005年全球100种最佳新产品之一。
用户们可以通过一个下载到自己电脑上的客户端软件,免费浏览全球各地的高清晰度卫星图片。
Google地球分为免费版与专业版两种。
二.Google Earth免费供个人使用,其功能主要有:1.结合卫星图片,地图,以及强大的Google搜索技术;全球地理信息就在眼前。
2.从太空漫游到邻居一瞥;3.目的地输入,直接放大;4.搜索学校,公园,餐馆,酒店;5.获取驾车指南;6.提供3D地形和建筑物,其浏览视角支持倾斜或旋转;7.保存和共享搜索和收藏夹;8.添加自己的注释。
我们平时使用的MapInfo软件,基本上是二维图层,而Google Earth图层则是三维图层,能更直观的,全面的收集和现实详细的地理信息(如高楼、山体、河流等);下面将介绍如何将MapInfo中的图层转化为Google Earth图层。
我们将会使用到两个MapInfo插件(GCITool、Mapinfo2Google)。
三、如何将工参表在MapInfo上显示,并制作扇区分布图工程参数表里面一般都包含CI、小区名、LAC、RAC、经纬度、方位角、频点、BSIC/扰码、BSC、MSC、RNC、波瓣宽度等信息;打开MapInfo,在MapInfo 中打开已有的工参表(用ExCEL格式打开),工参表里面必须包含上诉标记红色的项如下图所示打开后出现如下对话框,点击命名范围,选择其它。
如下图所示:选择好其它选项后,将标签中的A1改成A2,并勾选“以选中范围的上一行作为标题”,点击确定,如下图所示:打开excel表后在MapInfo的显示:完成以上步骤后,运行MapInfo插件“三扇区点生成器”(在菜单栏工具----运行MapInfo程序中打开GCITool插件);如下图所示:打开后如下图所示对话框:需选择相对应的相关选项;然后点击确定:选择好保存路径:基站三扇区图层制作完毕:四.如何将基站分布图在Googl e上显示打开已做好的MapInfo图层;注意:目前该插件只支持MapInfo图层窗口化,即不能全屏显示图层,否则将会报错。
路线转谷歌步骤
1、打开2000线位图。
2、打开谷歌地球,在谷歌上找到线位大概位置,在2000地形图上找到和谷歌上对应的公共点,并在CAD上画出公共点。
一般需要两个公共点连接成直线。
3、再在谷歌上找到两个相对应的公共点,并标记公共点连成直线,需要添加路径再保存。
导出这个路径的KMZ文件。
4、确定UTM坐标,一般可根据5W图的中央子午线确定,若没有可在谷歌地球上根据子午线确定。
5、打开Global Mapper 14.1 chinese,将刚才存的KMZ文件打开
6、然后点开工具—设置—投影。
7、,投影选择UTM,地区根据查得的中央子午线选择相应的地区,如本项目中央子午线为103,则选择48区102-108(如果是南半球,刚地区号为负“—”),其他参数一般默认即可,如基准为WGS84,平面单位为米等。
8、投影完成以后,输出DWG格式文件,然后用CAD打开第2步的公共点直线新建图层如“2000”,再打开从谷歌上输出的UTM坐标的DWG文件,做成2000和UTM对应关系图,另存为如“转换关系图”。
9、用AL,将2000图上需上到谷歌上的内容,AL到UTM直线上,另存为新的DWG文件(如0-18),切记删除不需要上到谷歌上的内容(以后转这一段的内容,都可以第8步的转换关系图为模板,无须再重复以上步骤)。
10、然后用Global Mapper 14.1 chinese打开刚才的DWG文件(0-18),按第7步投影,然后输出KMZ文件,再用谷歌地球打开。
百度地图经纬度和Google地图经纬度互转
百度地图经纬度和Google地图经纬度互转国内主流坐标系类型主要有以下三种:1、WGS84:一种大地坐标系,也是目前广泛使用的 GPS 全球卫星定位系统使用的坐标系。
2、GCJ02:由中国国家测绘局制订的地理信息系统的坐标系统,是由 WGS84 坐标系经过加密后的坐标系。
3、BD09:百度坐标系,在 GCJ02 坐标系基础上再次加密。
其中BD09LL 表示百度经纬度坐标,BD09MC 表示百度墨卡托米制坐标。
注意:百度地图 SDK 在国内(包括港澳台)使用的是 BD09LL 坐标(定位SDK 默认使用GCJ02 坐标);在海外地区,统一使用WGS84 坐标。
百度地图 SDK 是用什么坐标类型?1、国内(包括港澳台),输入、输出默认使用 BD09LL 坐标。
支持全局声明为GCJ02 坐标类型,全应用支持输入GCJ02 坐标,返回GCJ02 坐标。
2、海外地区,输出为 WGS84 坐标。
为什么需要坐标转换?国内(包括港澳台):默认使用BD09LL 坐标,国外使用WGS84 坐标。
若使用非BD09LL 坐标直接叠加在百度地图上,因坐标值不同,展示位置会有偏移。
因此:1)在国内(包括港澳台)通过其他坐标系(WGS84、GCJ02)调用百度地图服务时需要首先将其他坐标转换为BD09LL,再访问百度地图数据。
2)在国外,POI 使用 WGS84 坐标数值,则无需转换、百度地图国外即使用 WGS84 坐标。
非百度坐标系,如何转换成百度坐标系?1、通用坐标转换方法:手动调用百度地图SDK 坐标转换接口,将输入的 WGS84 或 GCJ02 坐标转换为 BD09LL 坐标。
适用于所有百度地图开发者,是转换为百度 BD09LL 坐标的官方基础算法。
2、自动坐标转换算法:支持全局声明为GCJ02 坐标类型,全应用内自动执行从GCJ02 到BD09LL 的坐标转换,即直接输入GCJ02 坐标,返回 GCJ02 坐标。
谷歌地图采用的是WGS84 地理坐标系(中国范围除外),所以需要对百度地图的坐标进行转换,以下是坐标的转化方式,可以方便和其他平台转化:。
(完整版)Mapinfo地图转换成GoogleEarth地图的方法
Mapinfo地图转换成Google Earth地图的方法Mapinfo地图只有平面信息,而Google Earth中可以看到基站周边的立体信息,方便我们查看基站周边环境,特别是在欧洲,Google Earth提供的地图精度比较高,在优化中经常用到。
下面就介绍一下利用特定的插件工具生成站点扇区图,并将该Mapinfo地图转换成Google Earth地图的方法:1准备工作1.1 安装mapinfo软件并加载插件在将Mapinfo地图转换成Google Earth地图前,我们需要加载两个mapinfo插件:1)Mapinfo2Google.MBX:用于Mapinfo图转换成Google Earth图2)SiteSee.MBX:用于画站点三叶图和创建标注图层3)安装英文版mapinfo软件这两个插件的加载方法是一样的,下面以加载SiteSee.MBX为例,如下:1)Tool menu Tool Manager2)Add Tool3)选择插件的路径,建议先将要导入的插件先拷贝到Mapinfo安装目前中的Tool文件夹下4)选择启动Mapinfo时自动加载插件5)插件加载后SiteSee.MBX出现在Table Menu中,Mapinfo2Google.MBX出现在主菜单上,如下:1.2 准备Mapinfo地图做mapinfo图层的方法有多种,下面介绍一下SiteSee.MBX插件创建mapinfo图层的方法:1.2.1准备一个包含小区信息的EXCEL文件(或文本文件)1)在Mapinfo中打开这个EXCEL文件,转换成Mapinfo表:2)如果Mapinfo打不开EXCEL文件,可将EXCEL文件保存为“制表符分隔"的文本文件.在Mapinfo中打开文本文件,“File Character Set”选择“No character set conversion”,点击“OK”转换成Mapinfo 表:1.2.2使用SiteSee。
mapinfo及googleearth常用操作方法
长春电信工程设计院股份有限公司
2
一、Mapinfo软件基本操作——概述
MapInfo是美国MapInfo公司的桌面地理信息系统软件,是一种数据可视化、信 息地图化的桌面解决方案。它依据地图及其应用的概念、采用办公自动化的操作、 集成多种数据库数据、融合计算机地图方法、使用地理数据库技术、加入了地理信 息系统分析功能,形成了极具实用价值的、可以为各行各业所用的大众化小型软件 系统。
选择要打开的一个或多个文件,单击“打开”即可。
整理课件
长春电信工程设计院股份有限公司
7
二、Mapinfo软件基本操作——打开/创建表
创建表:MapInfo软件中可以从外部文件,比如Microsoft EXCEL、Microsoft ACCESS、图片 等创建表,也可以自己新建表。通过外部文件创建表的方法可以参见后面章节。这里通过两个 常用的案例介绍新建表的方法:
栅格表与数据表有所不同,他没有记录、字段和索引等表结构,它只是一种能在地图窗口中显示的图像。 在MapInfo中所指的表这是单纯的数据表或是图形与数据的结合。
创建一个MapInfo表后,将会产生几个名字相同,扩展名不同的几个文件(根据生成方式不同,文件的类
型和数量有一定的区别),功能如下:
1、XXX.tab 该文件描述表的结构。 2、XXX.map
5
二、Mapinfo软件基本操作——打开/创建表
“表(Table)”是MapInfo软件最基本的数据格式,它不同于日常所指的表,也不同于数据库中的表。表
可以分为数据表和栅格表,数据表又分为包含图形信息对象的数据表和不包含图形信息对象的数据表,包含图 形信息对象的数据表是图形和数据的有机结合,数据表由行和列组成,每一行包含一个特定的地理特征、事件 等信息。每一列包含有关表中数据项的特定类型的信息,类似于数据库中每一行是一条记录,每一列是一个字 段。
利用Global Mapper实现MAPGIS与Google Earth间的数据转换
利用Global Mapper实现MAPGIS与Google Earth间的数据转换[摘要]MAPGIS是一款大型的地理信息系统,是地质勘查工作信息化的首选GIS软件平台,Google Earth是一款Google公司开发的虚拟地球仪软件,用户可以免费浏览全球各地的高清晰度卫星图片。
本文论述了如何利用Global Mapper 快速实现MAPGIS与Google Earth之间数据转换的方法。
[关键字]MAPGIS Google Earth Global Mapper 数据转换1 前言MAPGIS是一个集图形、图像、地质、地理、遥感、测绘、人工智能、计算机科学于一体的大型智能软件系统[1]。
如今,它已广泛应用于农林、测绘、地调、城市规划、资源环境调查、灾害监测等部门,是地质勘查工作信息化的首选GIS软件。
Google Earth含有海量的航天和卫星图片,其卫星影像图解析度高,更新快,但它不能直接录入大量的地质信息,为地质勘查工作服务。
MAPGIS和Google Earth这两种软件,它们功能各具特色,各有优点。
如何在实际工作中利用它们各自的优势,实现两者之间的数据转换,为地质勘查工作提供方便和提高效率?本文结合实际工作,就如何利用Global Mapper实现这两种软件之间的数据转换问题,做简要的论述和分析。
2 基础数据类型MAPGIS数据文件类型有很多,主要有点文件、线文件、区文件、工程文件、图像文件等文件类型。
Google Earth的可读文件类型为KML和KMZ两种文件类型。
Global Mapper是一款强大的软件,它支持的数据文件类型达60多种,比如GMW、KML\KMZ、DWG、DXF、GRD、CSV、DAT、SHP等文件[2]。
根据MAPGIS、Google Earth和Global Mapper文件的特点,一般用MAPGIS 数据格式中的点、线、面文件,Global Mapper数据格式的GMW和Google Earth 数据格式的KML\KMZ进行转换。
Google地图转换MapInfo地图方法
一、软件准备1)Google Earth Pro 4.2.0205.5730.rar:8080/%CF%B5%CD%B3%B9%A4%BE%DF/%CF%B5% CD%B3%C6%E4%CB%FB/0510/Google%20Earth%20Pro%204.2.0205.5730.rar 2)Global_Mapper_10.0.1142450.rar--/new_softdown/200910/Global_Mapper_10.0.1142450.rar3)MapInfo7.0.rar--thunder://QUFodHRwOi8vd3d3LmVxLmhoLmNuL2Rvd25sb2FkL01hcEluZm83Lj AucmFyWlo=二、下载Google地图1、打开Google Earth Pro软件,登录后,在左上角“飞到”中输入地区名,比如“桂林”。
搜索后在主窗口中显示桂林地图。
调整右上角方向与缩放工具,可进行相应浏览操作。
可再次在“飞到”中输入更细的地区名,比如“创新大厦”。
搜索后在主窗口中显示创新大厦附近区域的地图。
2、制作地标。
点击“添加”图标,选择“地标”菜单。
地图中出现一个浮动地标。
同时出现一个“Google Earth-New”**框。
可显示当前地标对应的经纬度。
移动浮动地标,**框中的经纬度会发生相应改变。
选好点,点击“确定”,浮动地标将固定下来。
此处命名为“Pt1”。
在“确定”前请务必先记下Pt1的经纬度数值,因为在地图配准时要用到的。
此处单位为“°”。
如果不是,可以在“工具->设置”中修改。
此处请务必把单位设定为“°”,否则会严重影响后续步骤的操作。
在“Google Earth设置”**框的“3D显示”选项卡中,找到“显示经纬度选项”,选择“Decimal Degrees”。
下面再做一个地标“Pt2”。
尽量不取相同经度或纬度,以提高配准经度。
记下Pt2经纬度数值。
MapInfo操作指导
i
3.7.1 生成扇区图层.........................................................................................................................41 3.7.2 创建和渲染.............................................................................................................................41 附录 A 参考文献 .........................................................................................................................................45
ii
第1章 概述
地理信息系统 GIS 是以采集、存储、管理、描述和分析与地球表面及空间地理分 布有关的数据的信息系统。它是以地理空间数据库为基础,在计算机硬件、软件 环境支持下,对空间相关数据进行采集、管理、操作、分析、模拟和显示,并采 用地理模型分析方法,实时提供多种空间和动态的地理信息,为地理研究、综合 评价、管理、定量分析和决策服务而建立的一类计算机应用系统。
路测图导入GoogleEarth方法
路测图导入Google Earth 方法一.需要准备的工具1.8.0版本以上的Mapinfo工具。
2.GE Link 工具包, Mapinfo自带的GE link 工具在使用的时候会出现编码错误,这个工具包会自动安装一个编码转换的工具,解决这个问题。
3.图像处理软件,这里推荐Photo Shop ,使用最基本的功能就可以。
二.具体步骤1.安装GE link 工具包。
2.首先默认路测数据已经导入到Mapinfo中,这个过程大家也都很清楚。
3.可以通过两种方式加载GE link工具,一个是在安装GE link工具包后会有一个小地球的标志。
另外一个在Tool >Run MapBasic Program中加载。
加载工具的目录在:\MapInfo\Professional\Tools 下面,如下方式加载即可。
4.使用工具之后会出现如下的提示框,OK即可,这里注意输出目录不要有中文,Google 不认中文。
5.OK之后会在Output Path目录下生成一个以File Name命名的kml 文件和JPG文件并且直接启动Google Earth,显示出如下的效果,但是这时候的效果比较差。
虽然可以通过调整透明度改善,不过数据的效果图也会随之淡化,所以这里需要使用Photo Shop进行一些图像处理。
6.由于在PS的时候.JPG在处理的时候是不能去除底色的,所以需要在Mapinfo 中将图片保存为.PNG文件。
7.在File >Save windows As中选择保存为PNG文件之后会出现如下提示窗口,这里保存的时候要注意讲图片保存的大一些,因为如果保存的太小的时候倒入之后线条可能不太清晰而且如果处理的时候缩放会导致经纬度出现偏差,路测路线偏离实际的测试路线。
8.保存之后将刚才生成的.JPG和 .KML与刚才生成的PNG保存在一个文件夹下,并且将.PNG文件的文件名保持与JPG文件一致,这时就可以删除掉.JPG文件,使用PNG文件同KML进行关联。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Mapinfo 地图转换成Google Earth 地图的方法
Mapinfo 地图只有平面信息,而Google Earth 中可以看到基站周边的立体信息,方便我们查看基站周边环境,特别是在欧洲,Google Earth 提供的地图精度比较高,在优化中经常用到。
下面就介绍一下利用特定的插件工具生成站点扇区图,并将该Mapinfo 地图转换成Google Earth 地图的方法:
1准备工作
1.1 安装mapinfo 软件并加载插件
在将Mapinfo 地图转换成Google Earth 地图前,我们需要加载两个mapinfo 插件:
1)Mapinfo2Google.MBX:用于Mapinfo 图转换成Google Earth 图
2)SiteSee.MBX:用于画站点三叶图和创建标注图层
3) 安装英文版 mapinfo软件
这两个插件的加载方法是一样的,下面以加载SiteSee.MBX 为例,如下:
1)Tool menu Tool Manager
2)Add Tool
3)选择插件的路径,建议先将要导入的插件先拷贝到Mapinfo 安装目前中的Tool 文件夹下
4)选择启动Mapinfo 时自动加载插件
5)插件加载后SiteSee.MBX 出现在Table Menu 中,Mapinfo2Google.MBX 出现在主菜单上,如下:
1.2 准备Mapinfo 地图
做mapinfo 图层的方法有多种,下面介绍一下SiteSee.MBX 插件创建mapinfo 图层的方法:
1.2.1准备一个包含小区信息的EXCEL 文件(或文本文件)
1)在Mapinfo 中打开这个EXCEL 文件,转换成Mapinfo 表:
2)如果M apinfo打不开E XCEL文件,可将EXCEL 文件保存为“制表符分隔”的文本文件。
在Mapinfo 中打开文
本文件,“File Character Set”选择“No character set conversion”,点击“OK” 转换成Mapinfo 表:
1.2.2使用SiteSee.MBX 工具画三叶图
画出的三叶图如下所示:
2生成Google Earth 图层
2.1 创建三叶图图层
1)在mapinfo 中打开需要转换成Google Earth 地图的图层,并为图层加上标注
2)Google2mapinfo.MBX工具有一个特殊要求:需要转换的图层不能最大化显示,所以要将需要转换的图层调整成下
面的窗口大小;
3)鼠标右键点击需要转换的图层,在弹出菜单中选择“View Entire layer”(插件只将窗口内显示的站点转换为.kml
文件,因此需要显示整个图层)
4)在Mapinfo2Google 菜单中选择“convert map window to KML file”
5)在Google Earth 软件中打开生成的文件即可
2.2 创建标注图层
1)使用SiteSee.MBX 插件中的Create sector label 功能,生成一个标注图层
2)在mapinfo 的map 菜单中选择“save cosmetic objects”,保存生成的标注图层,关闭所有地图窗口只打开生成的
标注图层窗口,与生成三叶图图层一样,把标注图层窗口非最大化显示,然后选择“View Entire layer”,之后就可以开始转换了。
3)标注图层如果是汉字,导入Google Earth 后显示为乱码。
解决办法是将生成的.KML 文件用“记事本打开”,
单击“另存为”,保存时将“编码”项改为“Unicode”(事实上编码只要不选择“ANSI”都可以)。
保存后再导入Google Earth,乱码问题就解决了。
在Google Earth 中显示的结果如下图所示:
附件:
Mapinfo2Google.MB
SiteSee.MBX
X。