- gitcloud
-
对于C#软件,先在引用中添加mapinfo mapx v5;再在工具中单机右键,选项卡,com组件,添加mapinfo mapx v5
前提:将Axinterop.MapXLib.dll和Interop.MapXLib.dll拷贝到项目debug文件夹下
之后即可在工具箱最下方看到Mapx控件,拖入form中即可
- ardim
-
我西北大学毕业的 你好 直接q我 .
gis的mapx文件压缩后打开图层错误
mapx文件未读到该图层。MapX是美国MapInfo公司在其开发的可视化地图组件DataMap基础上,向用户提供的具有强大地图分析功能的ActiveX控件产品,gis的mapx文件压缩后打开图层错误是因为mapx文件未读到该图层。2023-07-09 14:13:221
vb+mapx查询后如何将查到图元居中显示?
Map1.ZoomTo(Map1.Zoom, Map1.CenterX, Map1.CenterY);2023-07-09 14:13:281
对空间数据与属性数据的操作
( 1) 对空间图层的整体操作空间图层即 map1. layers. item( i) 对象,是图元空间数据的集合,具有以下几个重要属性:1) Visible,设置图层是否可见;2) Selectable,设置图层上的图元是否可选择;3) Editable,设置是否可编辑;4) AutoLabel,设置是否自动标注出图元的名称。每个属性的值都为布尔型,即 True 或者 False。图层的 Selectable 属性设置为 False 时,通过选择工具将不能选择该图元上的图元,在进行图层编辑时,可以将欲编辑的图层设置为 Selectable = True,Editable = True,然后将其他图层设置为 Selectable = False,Editable =False,以起到数据保护的作用。需要注意的是,要开始修改图层上的空间数据,只需要设置 Editable = True,但是如果要向图层上新增空间数据,还需要设置 map1. layers. InsertionLayer = map1. layers. item( i) ,否则会报错。要根据空间图层来具体得到某个图元,可以根据 GetFeatureByID 和 GetFeatureByKey方法来实现。当将某图层的 AutoLabel 设置为 True 时,该图层上的图元旁将会自动标注名称,名称的内容来自该图层的第一个字符类型字段的内容。如果需要更改标注内容的字段来源,则需要在 MapInfo Professional 中更改字段的排列顺序。( 2) 向空间数据库中动态添加数据为实现图中图功能,必须动态的在地图上添加矩形框,即动态的向空间库添加数据,如下代码可以实现:Dim ftr As MapXLib. FeatureDim ftrs As MapXLib. FeaturesDim rctMap As MapXLib. RectangleDim pnts As New MapXLib. PointsDim pnt1 As New MapXLib. PointDim pnt2 As New MapXLib. PointDim pnt3 As New MapXLib. PointDim pnt4 As New MapXLib. PointSet rctMap = frmmain. Map1. Boundspnt1. Set rctMap. XMin,rctMap. YMaxpnt2. Set rctMap. XMax,rctMap. YMaxpnt3. Set rctMap. XMax,rctMap. YMinpnt4. Set rctMap. XMin,rctMap. YMinpnts. Add pnt1pnts. Add pnt2pnts. Add pnt3pnts. Add pnt4pnts. Add pnt1Set ftr = Map1. FeatureFactory. CreateLine( pnts,styLine)Set Map1. Layers. InsertionLayer = Map1. Layers. Item( " eagle" )Map1. Layers. Item( " eagle" ) . AddFeature ftrMap1. Refresh( 3) 更新属性库首先,需要根据图元 ( 空间数据) 来找到它的属性数据,具体代码实现如下:Dim ftr As MapXLib. FeatureSet ftr = Map1. Layers( i) . Selection. Item( 1)Dim mydata As MapXLib. DatasetSet mydata = Map1. DataSets. Add( miDataSetLayer,lyr)For j = 1 To mydata. Fields. CountIf VarType( mydata. RowValues( ftr. FeatureID) . Item( j) . value) < > vbNull ThenGrid1. TextMatrix( j + 1,1) = mydata. RowValues( ftr. FeatureID) . Item( j) . valueEnd IfNext j这样就列出了该图元的属性值,当对属性值做了修改,需要更新到属性库时,则可通过如下代码:ftr. Layer. KeyField = Grid1. TextMatrix( i + 1,0)ftr. KeyValue = Grid1. TextMatrix( i + 1,1)ftr. Update需要注意的是,如果在属性库字段设计时,将一个或多个字段定义了索引,则必须保证更新的值为唯一,否则将更新错误,但建库时字段值已经有不唯一,则无论如何都会报错,所以建议不要定义索引。( 4) 实现对空间数据的复制粘贴空间对象不同于普通的文本或文件等数据,所以复制粘贴也有其特殊性,通过选择工具选择一个或多个图元,然后选择复制后,需要通过中间对象暂时存储,实现代码如下:Public m_ oExchangeFtrs As MapXLib. Features,必须在公共模块中定义。Dim oFtr As MapXLib. FeatureDim oLayer As MapXLib. LayerDim mulflag As Integermulflag = 0煤矿安全地理信息系统设计与开发这时,将空间对象存储在了 oExchangeFtrs 中,当需要粘贴时,则将 oExchangeFtrs 中的对象添加到空间库和属性库中,实现代码如下:煤矿安全地理信息系统设计与开发Next oFtrIf iFtrCount = 0 Then Exit Sub煤矿安全地理信息系统设计与开发Next oFtroLayer. RefreshSet m_oExchangeFtrs = oLayer. Selection( 5) 属性库导出到 Microsoft ExcelMicrosoft Excel 具有强大的表格功能,将属性库中的数据输出到 Microsoft Excel 后,可以进一步执行很多操作,具体实现代码如下:先在窗体中预览各属性值:For Each ftr In lyr. AllFeaturesIf VarType( mydata. value( ftr. FeatureID,nameid) ) < > vbNull And VarType( mydata. value( ftr. FeatureID,nameid) ) < > vbEmpty ThenFor i = 1 To UBound( selecti)DoEventsIf VarType( mydata. value( ftr. FeatureID,selecti( i) ) ) < > vbNull ThenFlex1. TextMatrix( j,i) = mydata. value( ftr. FeatureID,selecti( i) )End IfNext iFlex1. TextMatrix( j,0) = jj = j + 1Flex1. Rows = Flex1. Rows + 1End IfNext然后与 Microsoft Excel 通信,进行数据交换:Dim objexcel As excel. ApplicationDim i As LongDim j As LongIf Flex1. Rows = 0 ThenMsgBox " 没有查询结果可以导出! " ,vbInformationExit SubElseIf MsgBox( " 确实要将结果集导出到 Excel 吗" ,vbYesNo + vbInformation) < > vbYesThenExit SubEnd IfSet objexcel = New excel. Applicationobjexcel. Workbooks. AddFor j = 0 To Flex1. Cols - 1For i = 0 To Flex1. Rows - 1objexcel. Cells( i + 1,j + 1) = Flex1. TextMatrix( i,j)Next iNext jobjexcel. Visible = Trueobjexcel. DisplayAlerts = TrueEnd If主题地图 ( 又称专题地图) 的绘制是根据特定的主题遮蔽地图的过程。主题通常是数据的某个部分或某些部分,可以从数据集获取。主题利用颜色阴影、填充图案、符号或柱状图和饼状图,以可视化的形式显示数据。根据数据中的特定值将这些颜色、图案或符号分配给地图对象,可以创建不同的主题地图。柱状图和饼状图可以对数据集中的每个记录进行数据比较。主题地图可以使用许多方法来图解数据。最常用的一种主题地图就是气象图。如果显示红色,表示天气很热 ( 气温高) ; 如果显示蓝色,表示天气很冷 ( 气温低) 。通过主题地图绘制还可以发现通过表格数据很难看出来的数据趋势。在 Themes 集合、Theme 对象和 ThemeProperties 对象中使用属性和方法,可以创建并定义自己的主题遮蔽。Legend 对象存储主题的关键字,说明主题的颜色、形状和大小代表的含义。MapX 提供了 9 种主题地图,其参数与注释如下:miThemeRanged: 范围主题;miThemeBarChart: 柱状图主题;miThemePieChart: 饼状图主题;miThemeGradSymbol: 分级符号主题;miThemeDotDensity: 点密度主题;miThemeIndividualValue: 个别值主题;miThemeAuto MapX: “最佳猜测” 主题;miLabelRangedTheme: 范围标签主题;miLabelIndividualValuesTheme: 个别标签值主题。每个主题有自己的用途和唯一的属性。例如,使用 miThemeRanged,可以根据人口密度按主题遮蔽世界地图。可以使用红色的分级阴影遮蔽国家,最深的红色代表人口密度最大的国家,最浅的红色代表人口密度最小的国家,您可以很容易看出世界人口的分布。使用主题地图绘制并不仅限于显示数字值。标称值也可以按主题遮蔽。例如,若有地下电缆数据集,过去6 个月内尚未使用过的地下电缆将标记为优先状态,使用 miThemeIn-dividualValue 可以根据修复状态遮蔽这些电缆,值相同的所有记录将使用相同颜色遮蔽。具体的代码实现如下:Dim ds As MapXLib. DatasetDim mylayer As MapXLib. layerSet mylayer = frmmain. Map1. Layers( Combo1. Text)Set ds = frmmain. Map1. DataSets. Add( miDataSetLayer,mylayer," themedata" )Map1. DataSets. Item( " themedata" ) . Themes. Add themetype,fieldname"Map1. DataSets. Item( " themedata" ) . Themes. Item( 1) . ThemeProperties. NumRanges = 12主题加入指定集合后,将创建 Theme 对象,可以处理对象的各个属性。对巷道图层,可以做瓦斯大小范围图和人员分布范围图,对通风系统图,可做风量大小范围图等。2023-07-09 14:13:371
本人在安装mapinfo mapx5.0时提示"找不到许可文件,未能正确生成许可"是什么
1。使用VB6.0自带的“Package & Deployment 向导”打包工具,顺序做下去,除了VB自动搜索出来的关联文件以外,还需要手动添加一个文件"GeoDict.DCT",该文件位于“C:Program FilesMapInfoMapX 5.0Maps”目录下,选择安装路径也同样为这个目录,即安装回客户机器的同样位置;打包完成后,VB会自动生成安装文件,不赘述;2023-07-09 14:13:461
谁可以教教我在VB+MAPX中怎么使用查询?
七年级双语报2023-07-09 14:13:521
MAPX 5.0.26 支持64位系统吗
不支持,没有办法解决2023-07-09 14:13:591
系统软件实现技术
系统主要是采用 MapX5. 0 与 VB6. 0 进行开发的。除了主体的开发平台外,还需要一些其他的软件。开发过程中采用 Adobe 公司的 Photoshop 进行图像处理; 采用 Pinnacle 公司的 STUDIO MP10 进行视频采集与处理; 音频处理则采用 ESS 公司开发的 Audio 系列应用软件; 文字处理采用微软公司的 MS OFFICEXP 办公软件; 视频剪辑采用 Adobe 公司的 Premiere 6. 0;绘图软件采用 AUTODESK 公司的 AutoCAD; 打包软件采用 Install Shield 软件,它是专业化安装软件,当系统做好后,用它为系统打包,然后向用户发行。2023-07-09 14:14:151
你好,我现在想将mapX和labview结合使用,地图是一个校园,请问能不能给个mapx例程,我是菜鸟级的。
具体问题具体分析2023-07-09 14:14:221
帮忙翻译一下,谢谢~
在网上用baidu搜索下载一款翻译软件(如‘有道桌面词典"‘格灵斯"等)就可以解决很多问题。很实用!2023-07-09 14:14:302
用GeosetManager生成gst文件后,C++ BUILDER的MAPX控件中找不到这个gst文件,直接输入文件名不好使。
问题自己已经解决了,谢谢。把文件放到根目录下就好了2023-07-09 14:14:481
地图矢量化的实现方式
要实现纸质地图到数字化地图的转变,就要涉及到地理信息系统数据的处理。通常地理信息系统(GIS)把要处理的数据分为两类,第一类是反映事物地理空间位置的信息,从计算机的角度称空间位置数据,也常称地图数据、图形数据;第二类是与事物的地理位置无关,反映事物其它特征的信息,可称为专题属性信息或专题属性数据,也称文字数据、非图形数据。为了进行有效的查询、分析和管理等,必须将这两类信息都输入到计算机GIS数据库中。首先我们要做的就是空间信息的获取。其途径通常为:野外测量、遥感、现场调查、已有资料等;属性信息的获取途径通常为:遥感、现场调查、社会调查、已有资料等。获取的数据经过分类、编码、转换等,输入到GIS数据库中,形成规范化、标准化的数据。 由于空间数据的来源不同,采集的仪器和方法也不同。目前有如下几种方法: 野外数据采集 GPS数据采集。GPS是全球定位系统的简称。GPS定位方法精度高,方便灵活。GPS定位技术在测绘中的应用和普及,是测绘科技的一个重大的突破性进展。随着GPS接收站的全面建成和发展,GPS技术在普通测量与工程测量中的应用将越来越广泛。我们可以通过接受站接受设备直接进行GPS数据的接受,并经过投影变换,输入到数据库中。 全站仪数据采集。用全站仪(或半站仪)进行实地测量,将野外采集的数据自动传输到电子手簿,磁卡或便携机内记录,并可在现场绘制地形(草)图,再到室内将数据传输到计算机中,人机交互编辑后由计算机自动生成数字化地图,并控制绘图仪自动绘制地形图。 原图(底图)数据采集 在已进行过测绘工作的测区,有存档的纸介质(或聚酯薄膜)地形图,即原图,也称底图。为了图的计算机存档和修测,为了建立该区的GIS或进行工程CAD设计,就必须将原图数字化后,才能将图的有关数据输入到计算机中。数字化的方法主要有两种: 数字化仪数字化。通称的数字化仪实质是图形数字化仪,是-种将图示坐标转换为数字信息的设备。数字化的过程,即用数字化仪对原图的地形特征点逐点进行采集(称手按数字化),将数据自动传输到计算机,处理成数字地图的过程。 扫描仪数字化。扫描仪实质是图像(含图形)数字化仪,图在扫描仪上走-遍,即完成图的扫描数字化,将数据输入计算机,存储、处理并可再回放成图。扫描数字化速度较快,但此时获得的仅为栅格数据。栅格数据结构比矢量数据结构简单,但图形数据量大;其空间数据的叠置和组合十分简便,一些空间分析也易于进行;图像表现比较真切,易于与遥感数据匹配应用和分析,因此在GIS中,它与矢量数据结构并用。在数字测图中,对原图(矢量图)扫描数字化,获得栅格图形数据后,还必须将栅格数据转换为矢量数据,即矢量化。 摄影测量与遥感。 这种方法是以航空摄影获取的航空像片作数据源,即利用测区的航空摄影测量获得的立体像对,在解析测图仪上或在经过改装的立体量测仪上采集地形特征点,自动传输到计算机内,经过软件处理,自动生成数字地形图,并控制绘图仪绘制地形图。在我国目前条件下,航测适于较大面积几年一次的测量工作,在城市利用新的航测数据建立GIS以后,只要用野外数字测图系统作为GIS地形数据的更新系统,用地面测绘的数字图作局部更新,即可保证GIS地形数据的现势性。 在空间数据采集完后,我们要进行与空间事物相关的属性数据的输入和管理工作属性数据输入与管理属性数据是描述空间实体的特征信息,一般包括文字信息、图、表等。属性数据的输入通常有4种方法:键入法、使用光学的字符识别技术、在数字化或矢量化的过程中赋值以及人工编辑法。在实际实现系统时,可以通过相应实体的属性输入界面逐个输入,但当数据量较大时,一般都与空间数据分开输入且分别存贮。在分开输入时,将属性数据通过数据库软件或者办公软件如Excel等输入。它不仅能表示常规类型的属性数据即表数据外,还可以表示报表、普通照片、录象资料、声音、动画等,从而更形象的表示实体内容。 这里就常用的使用扫描矢量化方法和MAPINFO软件工具,来完成数字化成地图制作的过程做具体介绍。一般来说,使用MAPINFO进行矢量化的步骤方法,可分别描述如下:1首先将纸质地图用扫描仪扫描后,以图形格式存盘。然后在专业化图像处理软件中打开(例如PHOTOSHOP等),调用图像处理软件的功能进行图形拼接、降噪、细化等,以改善获取的栅格图象的质量,从而得到栅格地图。2在MapInfo中打开栅格地图。根据显示的信息框,选择只要求简单显示还是要求进行配准。如果选择简单显示,则MapInfo自动生成一个与该栅格文件同名的TAB文件,并在地图窗口中显示。此时的图层被称为栅格图层。我们可以通过在栅格图层上覆盖新的图层来绘制我们需要的矢量化地图。如果要在软件中同时使用栅格图象与矢量图象,则必须选择后者进行图象配准,这样MapInfo才能在地图窗口中确切地放置图象。配准过程在图象配准对话框中进行,主要有两方面的工作,一是提供准确的控制点信息,二是指定栅格图象的投影。选择前者仅仅将栅格地图作为绘制矢量化地图的参考。3在MapInfo中利用保存修饰层的方法建立一个新图层,并将该图层设为可见、可以编辑。利用修饰层来生成新图层可以保证各层尺寸等参数的统一。然后在新建的图层上参考栅格图层调用MapInfo提供的绘制点、线、折线、圆弧、多边形、矩形、文本、符号等工具进行描路径。实践表明,道路部分适合采用折线绘制,街区、河流、绿地等用多边形绘制比较方便。考虑到工作效率,还可以象Photoshop那样在MapInfo中生成多个图层,分别代表道路、绿地、河流、街区等,可以由多人分别在自己的计算机上绘制,最后在一台机器上总体合并。4每个新图层都是我们绘制的多边形、折线等对象的集合,可以调用MapInfo提供的工具对各对象进行分割、合并、擦除、拖拉等操作,可以对每个对象设置属性信息(如路名、所属街区、GPS位置信息等)。5将绘制好的图层汇总到一起。启动MapX的地图管理工具Geoset Manager,在该软件中打开所有图层,保存为一个GST文件(要存放在MapX的Maps目录下)。再将画好的地图注册。至此,矢量化地图的生成工作就结束了。在做完矢量化地图的工作之后,我们就可以在其基础上通过编程完成一系列的界面设计、算法设计、查询窗口设计,最终完成完整的系统设计。2023-07-09 14:14:561
gis开发方式
独立开发 指不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C十十、Delphi等,在一定的操作系统平台上编程实现。这种方式的好处在于无须依赖任何商业GIS工具软件,减少了开发成本,但一方而对于大多数开发一者来说,能力、时间、财力方而的限制使其开发出来的产品很难在功能上与商业化GIS工具软件相比,而且在购买GIS工具软件上省下的钱可能还抵不上开发者在开发过程中绞尽脑汁所花的代价。宿主型二次开发 指基于GIS平台软件上进行应用系统开发。大多数GIS平台软件都提供了可供用户进行二次开发的脚本语言,如ESRI的ArcView提供了Avenue语言,MapInfo公司的MapInfo Professional提供了MapBasic语言等等。用户可以利用这些脚本语言,以原GIS软件为开发平台,开发出自己的针对不同应用对象的应用程序。这种方式省时省心,但进行二次开发的脚本语言,作为编程语言,功能极弱,用它们来开发应用程序仍然不尽如人意,并且所开发的系统不能脱离GIS平台软件,是解释执行的,效率不高。基于GIS组件的二次开发 大多数GIS软件产商都提供商业化的GIS组件,如ESRI公司的MapObjects, Maplnfo公司的MapX等,这些组件都具备GIS的基本功能,开发人员可以基于通用软件开发工具尤其是可视化开发工具,如Delphi, Visual C++, Visual Basic, Power Builder等为开发平台,进行二次开发。 利用GIS工具软件生产厂家提供的建立在OCX技术基础上的GIS功能控件,如ESRI的MapObjects, Maplnfo公司的MapX等,在Delphi等编程工具编制的应用程序中,直接将GIS功能嵌入其中,实现地理信息系统的各种功能。三种实现方式的分析与比较 由于独立开发难度太大,单纯二次开发受GIS工具提供的编程语言的限制差强人意,因此结合GIS工具软件与当今可视化开发语言的集成二次开发方式就成为GIS应用开发的主流。它的优点是既可以允分利用GIS 工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,而且可靠性好、易于移植、更于维护。尤其是使用OCX技术利用GIS功能组件进行集成开发,更能表现出这些优势。2023-07-09 14:15:114
Oracle空间操作函数SDO_RELATE和SDO_GEOM.RELATE的关系和区别是什么?
目前,采用数据库管理空间数据已经成为主流技术,其优点在于能够实现空间数据与属性数据的无缝集成,这种数据库也称为空间数据库。空间数据库利用数据库的管理机制可以保证空间数据的完整性和安全性,对空间数据进行备份和恢复以及控制用户的并发访问等。 Oracle的空间数据选件(Oracle Spatial)可以把复杂的地图对象(包括空间数据和属性数据)存入一个表中,同时建立空间数据索引,从而实现空间数据和属性数据的一体化存储和管理。Oracle Spatial还提供空间算子,结合SQL语句实现对空间数据的查询和其它复杂空间分析。 MapX是MapInfo公司的地图控件,用户可以在自己的程序中引入MapX控件,实现带地图功能的应用,同时可以选择用户熟悉的开发工具,如VB、VC、PowerBuilder、Delphi等。 用MapX访问Oracle的空间数据是通过Oracle提供给Mapinfo的底层数据库接口OCI(Oracle Call Interface)。 Mapinfo提供EasyLoader工具,用来将用户制作的Mapinfo地图数据上载到Oracle数据库中。如果将来地图数据发生了变更,也只需要通过EasyLoader的刷新表功能,即可将发生变化的地图数据在Oracle数据库中更新。 摘 要:采用数据库管理空间数据是当前的发展趋势,文中总结了Oracle数据库中空间数据的上载和存储机制,探讨了应用程序对Oracle数据库中空间数据的访问,并给出应用实例。 关键词:空间数据库;Oracle数据库;MapX 中图分类号:TP311;P285.3文献标识码:A Accessing Spatial Data in Oracle Using MapXAbstract:Spatial data managed by database is development trend currently. This paper summarizes spatial data uploaded to Oracle database and its storage,discusses accessing spatial data in Oracle database and gives an application instance. Key words:spatial database;Oracle database;MapX本文着重探讨用VC、MapX开发带地图的应用程序,Oracle中空间数据的存储和管理以及如何在应用程序中访问存储Oracle中的空间数据。工作环境如下:Visual C++ 6.0,Mapinfo6.5,MapX4.5,EasyLoader for Oracle 81116,Oracle81116。Mapinfo6.5用来进行地图的编辑和属性数据的编辑,EasyLoader for Oracle8.1.6将地图数据上载到Oracle中,Visual C++6.0与MapX4.5相结合开发实现Oracle中空间数据访问的应用程序。 1 空间数据的准备和管理 1.1 空间数据存储的配置 首先创建数据库,然后进行空间数据存储的配置,主要涉及以下两个方面的配置: 1)为存储空间数据创建新的表空间 每个Oracle的数据库至少有一个SYSTEM表空间,为了提高运行效率和管理的需要,最好使用其他表空间来划分用户和应用程序,因此为访问空间数据的用户和应用程序创建新的表空间,设表空间名为GISTEST,并配置GISTEST的初始大小、增量大小等参数。 2)创建有权访问空间数据的用户 Oracle中可以为用户设定特定的表空间作为他的缺省表空间,创建用户GISTESTuser的缺省表空间为GISTEST,则该用户便具有访问空间数据的权利,同时还要为用户GISTESTuser设定合适的角色、系统权限和对象权限。 1.2 Mapinfo地图的上载 地图用Mapinfo编辑完成,再用EasyLoader forOracle81116将编辑好的Mapinfo的地图上载到Oracle中。要将地图上载到GISTEST表空间中,需要以用户GISTESTuser的身份登录到Oracle。通过Oracle的身份验证后,才可以上载Map-info地图。第一次上载Mapinfo地图到Oracle时,EasyLoader会自动创建一个名为mapinfo的用户,该用户的缺省口令为逗mapinfo地,缺省表空间和临时表空间都是SYSTEM,同时会在该用户下创建一个名为MAPINFO-MAPCATALOG的表,这个表用来记录所有上载到Oracle中的Mapinfo地图的信息,如:地图的存储和索引形式、地图的名称、地图的所有者、存储地图空间数据的列名、地图的坐标系、地图的边界、地图中点线面的样式信息等。 1.3 Mapinfo地图在Oracle中的存储和管理方式Oracle为管理空间数据提供了对象管理模式SDO(Spatial Data Object),同时提供优秀的空间索引机制。 MDSYS是Oracle Spatial的管理用户,MDSYS方案规定几何数据的存储方式、语法形式和语义。MDSYS方案中,表SDOGEOM-METADATA-TABLE存储所有上载到Oracle中的Mapinfo地图的信息,表SDO-INDEX-METADATA-TABLE存储与索引相关的信息,如:被索引的列名,索引的方式,索引的级别,索引的所有者等。MDSYS方案中还有与空间数据及其索引相关的视图:ALL-SDO-GEOM-METADATA,ALL-SDO-INDEXMETA DATA,DBA-SDO-GEOM-METADATA,DBA-SDO-INDEXMET ADATA,USER-SDO-GEOM-METADATA,USER-SDOINDEX-METADATA。 上载到Oracle中的每一个地图由两个表表示,一个是与该地图空间索引方式相关的表,叫做索引表,另一个用来存储地图属性数据和空间数据,叫数据表。例如:一个名为ShangHaiMap的地图上载到Oracle,创建两个表:数据表ShangHaiMap和索引表ShangHaiMap-SX-FL6$。Oracle为了有效的管理和存储Mapinfo地图,在数据表ShangHaiMap中新增加两列:一列是类型为NUMBER的逗MI-PRINX地,它是唯一性索引字段,一列是类型为SDO-GEOMETRY的逗GEOLOC地,用来存储空间数据。SDO-GEOMETRY是Oracle中存储地图数据的空间数据类型。 2 应用程序的开发 在VC下,引入MapX控件开发带地图的应用程序。MapX控件一般自动打开在系统中注册的缺省.GST文件,其路径位于注册表HKEY-LOCAL-MACHINESoftwareMapInfoMapX4.0下,注册键SearchPaths下是缺省的数据目录,定位3.gst文件。3.gst文件是MapX可以访问的地图文件,由MapX的实用程序GeoSet Manager创建,它是将多个Mapinfo的地图文件(3.tab)集中在一起,这样打开一个3.gst文件,即可将一个包含多层的地图打开。此外还有注册键GeoDicionary,用来定位3.dct文件。3.dct文件由MapX的另一个实用程序Geodictionary Manager生成,Geodictionary Manager默认的3.dct文件为自带的GeoDict.dct,用户可以根据需要,建立自己的3.dct文件。 应用程序采用客户/服务器结构,通过OCI接口,实现应用程序对Oracle中空间数据的访问,如图1所示。 MapX应用程序结构 2.1 应用程序开发中的关键技术 在VC的工程项目中加入MapX.cpp和MapX.h两个文件,这两个文件中定义了有关MapX控件的类和访问方法。开发过程中,有如下几个关键技术: 1)访问用户自己的GST文件 在应用程序中,如果用户要访问自己的GST文件,改变MapX控件缺省打开的3.gst文件,就必须对类CMapX进行设置,指定要打开的3.gst文件。方法如下: CMapX m_MapX; //指明用户要访问的.GST文件替代缺省设置 m-MapX.SetGeoSet(". oads oads.gst"); 2)访问Oracle空间数据库 MapX控件有两种方式访问Oracle中的空间数据,一种为ODBC方式,一种为OCI方式。ODBC方式的缺点是通用接口,速度慢,需要配置数据源DNS。OCI方式的优点是底层接口,速度快。现以OCI方式实现在应用程序中与Oracle的连接并访问Oracle中的空间数据。 通过OCI访问空间数据相当于从服务器端下载相关的空间数据,并在客户端进行显示。客户端显示空间数据的方式就是在原有地图上增加一层新的地图,而与图层相关的类为CmapX2LayerInfo,有两个重要的方法SetType()和AddParameter()。前者用来设置图层的类型,后者为连接数据库设置参数。 图2所示为连接Oracle空间数据库的流程。 连接Oracle空间数据库的流程图 类CmapXLayerInfo是类ColeDispatchDriv2er的继承类,创建类CmapXLayerInfo的方法,即为创建新图层的方法。方法如下: CMapXLayerInfo LayerInfoObject; if (!LayerInfoObject.CreateDispatch(LayerInfoObject.GetClsid())){ TRACE0("Failed to Createobject"); return; } 图层类型为miLayerInfoTypeServer时,连接Oracle数据库需要设置连接字符串、连接方式、是否设置缓存、是否设置最小边界矩形查询、新建图层名称、查询空间数据的SQL语句等参数。下面给出设置连接字符串的VC语句。 VARIANT s; CString str; str="SRVR=GISTEST;UID=GISTESTuser;PWD=GISTESTuser";s.vt = VT-BSTR; s.bstrVal = str.AllocSysString(); LayerInfoObject.AddParameter("CONNECTSTRING",s);查询结果的显示通过类CmapXLayers的Add()方法实现,具体示例如下: m_MapX.GetLayers().Add(LayerInfoObject,1);3)Oracle Spatial的空间函数 Oracle Spatial提供了适合于空间数据操作的空间函数,如比较常用的用于相交查询的SDO-FILTER,SDORELATE,SDO-WITHIN-DISTANCE;用于缓冲区分析的SDO-GEOM.SDO-BUFFER;用于面积、长度计算函数的SDO-GEOM.AREA,SDO-GEOM.LENGTH等。下面给出用于面积计算的SQL语句示例: update aTable set aTable.AREA= mdsys.sdo-geom.sdo-area(GEOLOC,(select sdo-diminfofrom mdsys.sdo-geom-metadata-table where sdo-geommetadata-table.sdo-table-name = "aTable" and sdo-geommetadata-table.sdo-column-name= "GEOLOC")) 其中aTable表示一个空间数据表,它存储空间数据的列名为逗GEOLOC地,列AREA存放计算出的面积值,SDOAREA计算二维多边形的面积,并将计算结果存放到列AREA中保存。 2.2 应用程序示例 应用程序通过与空间数据库的接口来实现对数据库中存储的属性数据和空间数据的访问,同时根据实际情况的需要对数据进行查询,并用地图等直观的形式反应查询结果。 图3中的地图基本数据来源于北大方正MapInfo事业部,基于实验目的,增添了道路长度字段,并设定各个道路的长度,其查询SQL语句为: SELECT 3 FROM Shanghai-thirdr WHERE Shanghai-thirdr.RoadLength > 10 基于道路长度属性的查询 文章只是对空间数据库的访问方面做了一些有益的探索,还有很多工作需要做。随着面向空间数据库的应用,基于空间数据库的空间数据挖掘以及将空间数据应用于各行各业的研究将会不断展开。 参考文献 [1] 本丛书编委会.Oracle8.1.6管理员指南[M]. 北京:北京希望电子出版社,2000. [2] 修文群,池天河,等. 城市地理信息系统[M]. 北京:北京希望电子出版社,1999. [3] Oracle8.Oracle Spatial User"s Guide and Reference Release 8.1.6[DB/CD].2023-07-09 14:15:391
vb如何实现游戏中的地图!
厉害2023-07-09 14:15:473
栅格地图矢量化的主要步骤是什么?要注意哪些事项?
地图矢量化是重要的地理数据获取方式之一。所谓地图矢量化,就是把栅格数据转换成矢量数据的处理过程。当纸质地图经过计算机图形、图像系统光—电转换量化为点阵数字图像,经图像处理和曲线矢量化,或者直接进行手扶跟踪数字化后,生成可以为地理信息系统显示、修改、标注、漫游、计算、管理和打印的矢量地图数据文件,这种与纸质地图相对应的计算机数据文件称为矢量化电子地图。矢量化处理的步骤这里就常用的使用扫描矢量化方法和MAPINFO软件工具,来完成数字化成地图制作的过程做具体介绍。一般来说,使用MAPINFO进行矢量化的步骤方法,可分别描述如下:1首先将纸质地图用扫描仪扫描后,以图形格式存盘。然后在专业化图像处理软件中打开(例如PHOTOSHOP等),调用图像处理软件的功能进行图形拼接、降噪、细化等,以改善获取的栅格图象的质量,从而得到栅格地图。2在MapInfo中打开栅格地图。根据显示的信息框,选择只要求简单显示还是要求进行配准。如果选择简单显示,则MapInfo自动生成一个与该栅格文件同名的TAB文件,并在地图窗口中显示。此时的图层被称为栅格图层。我们可以通过在栅格图层上覆盖新的图层来绘制我们需要的矢量化地图。如果要在软件中同时使用栅格图象与矢量图象,则必须选择后者进行图象配准,这样MapInfo才能在地图窗口中确切地放置图象。配准过程在图象配准对话框中进行,主要有两方面的工作,一是提供准确的控制点信息,二是指定栅格图象的投影。选择前者仅仅将栅格地图作为绘制矢量化地图的参考。3在MapInfo中利用保存修饰层的方法建立一个新图层,并将该图层设为可见、可以编辑。利用修饰层来生成新图层可以保证各层尺寸等参数的统一。然后在新建的图层上参考栅格图层调用MapInfo提供的绘制点、线、折线、圆弧、多边形、矩形、文本、符号等工具进行描路径。实践表明,道路部分适合采用折线绘制,街区、河流、绿地等用多边形绘制比较方便。考虑到工作效率,还可以象Photoshop那样在MapInfo中生成多个图层,分别代表道路、绿地、河流、街区等,可以由多人分别在自己的计算机上绘制,最后在一台机器上总体合并。4每个新图层都是我们绘制的多边形、折线等对象的集合,可以调用MapInfo提供的工具对各对象进行分割、合并、擦除、拖拉等操作,可以对每个对象设置属性信息(如路名、所属街区、GPS位置信息等)。5将绘制好的图层汇总到一起。启动MapX的地图管理工具GeosetManager,在该软件中打开所有图层,保存为一个GST文件(要存放在MapX的Maps目录下)。再将画好的地图注册。至此,矢量化地图的生成工作就结束了。在做完矢量化地图的工作之后,我们就可以在其基础上通过编程完成一系列的界面设计、算法设计、查询窗口设计,最终完成完整的系统设计。2023-07-09 14:15:541
MapInfo如何导出高精度的图片格式地图
走布局啊2023-07-09 14:16:024
关于电子地图
go2map看看把mapx也可以2023-07-09 14:16:093
如何制作简单的电子地图
不知道2023-07-09 14:16:174
统计地图
使用各种图形样式 ( 颜色或填充模式) 图形化地显示地图基础信息的一类地图即为专题地图。利用专题地图可根据表中的特定值来赋给地图对象颜色、图案和符号,从而把各种数据图形化,很直观、形象地显示在地图上。创建一幅专题地图有以下 3 个步骤: 选择专题地图类型; 为地图选择专题值; 自定义专题地图。图 6. 11 为专题图对话框,可以选择以下 6 种类型的专题地图:图 6. 11 打开专题图对话框1) 范围地图: 按所设定的范围显示数据。这些范围用颜色或图案加以渲染。2) 直方图: 将表中各记录的专题变量以直方图显示。3) 饼图: 将表中各记录的专题变量以饼图显示。4) 等级符号地图: 为表中每条记录显示一个符号。符号大小与数据值成比例。5) 点密度地图: 将数据值以点的方式显示在地图中,每个点代表一定的数量,各个区域内的点数目与该区域的数据值成比例。6) 独立值地图: 按独立数值渲染地图。其中饼图和直方图专题地图是多变量的,其余四类专题地图是单变量的,部分程序可表示如下:On Error Resume NextIf Combo1. Text = " " Then Exit SubMe. MousePointer = 13maxvalue = 0minvalue = 0Dim total As DoubleDim fld As MapXLib. FieldSet fld = mydata. Fields( Combo1. Text)If Not ( fld. Type = miTypeFloat Or fld. Type = miTypeInteger Or fld. Type = miTypeNumericOr fld. Type = miTypeSmallInt) ThenExit SubEnd IfDim fldid As IntegerFor Each fld In mydata. FieldsIf fld. Name = Combo1. Text Thenfldid = fldid + 1Exit ForEnd Iffldid = fldid + 1NextDim lyr As MapXLib. LayerSet lyr = map. Layers( Combo2. Text)Dim ftr As MapXLib. FeatureDim tmpvalue As DoubleFor Each ftr In lyr. AllFeaturesIf VarType( mydata. Value( ftr. FeatureID,fldid) ) = vbNull Thentmpvalue = 0Elsetmpvalue = mydata. Value( ftr. FeatureID,fldid)End Iftotal = total + tmpvalueIf maxvalue < tmpvalue Thenmaxvalue = tmpvalueEnd IfIf minvalue > tmpvalue Thenminvalue = tmpvalueEnd IfNextLabel12. Caption = maxvalueLabel11. Caption = minvalueLabel9. Caption = totalLabel10. Caption = Format( total / CInt( Label7. Caption) ," 0. 000" )Dim arr( 1 To 11) As DoubleDim i As IntegerDim rate As Doublerate = ( maxvalue - minvalue) / 10For i = 1 To 11arr( i) = minvalue + rate * ( i - 1)Next iarr( 11) = arr( 11) + 1Dim numarr( 1 To 10) As DoubleDim tempstr As StringFor i = 1 To 10numarr( i) = 0Next iFor Each ftr In lyr. AllFeaturesIf VarType( mydata. Value( ftr. FeatureID,fldid) ) = vbNull Thentmpvalue = 0Elsetmpvalue = mydata. Value( ftr. FeatureID,fldid)End IfFor i = 1 To 10If tmpvalue > = arr( i) _And tmpvalue < arr( i + 1) Thennumarr( i) = numarr( i) + 1End IfNext iDoEventsNextDim final( 1 To 10,1 To 2)For i = 1 To 10final( i,1) = " " & CStr( Format( ( arr( i) + arr( i + 1) ) / 2," 0. 00" ) )final( i,2) = numarr( i)Next iMSChart1. ChartData = finalMe. MousePointer = 0End Sub2023-07-09 14:16:241
在gis里面如何在数据前面加0
无论是什么软件,一般空间数据和属性数据都是通过元素的ID来进行连接的。例如ArcGIS,可以在打开一个地图后,看属性表,不同的数据文件有不同的规则,都有个类似ObjectID的字段做唯一的标识和联系。mapinfo里面 选择表==》导出,格式是MIF,到时候会产生两个文件,一个是MIF一个是MID,MIF是记住空间数据的,MID是记住属性数据的。 你应该知道mapx的开发吧,mapx就是mapinfo的二次开发控件,它的开发流程 假设MapX已经打开一个图层,图层名为"a",手头还有一个Access数据库a.mdb,数据库里面有个表X想和a图层绑定。我们保证a层属性里面有一个字段ID1与表X的一个字段ID2是匹配的2023-07-09 14:16:451
opencv 摄像头标定后得到了内外参数,然后怎么把图片上两点的距离换算为物理实际距离呢?感谢!
我重新编译了Calibration那个程序,然后自己写了个批处理.bat文件,代码如下,删除txt,然后调用它del/f/qlist_of_images_auto(bmp).txtdir*.bmp/B>>list_of_images_auto(bmp).txtOpenCV_Example_Calibration.exe-w7-h8-s5-ocamera.txt-op-oelist_of_images_auto(bmp).txtpause其中-ocamera.txt表示输出参数的文件名。不过这样用着不爽。你看源代码里面cvWrite(fs,"camera_matrix",camera_matrix);cvWrite(fs,"distortion_coefficients",dist_coeffs);的地方,知道什么意思了吧,向txt里面写这两个参数我后来是这么存的cvSave("DistortionMatrix.xml",dist_coeffs);cvSave("IntrinsicsMatrix.xml",camera_matrix);这样下次调用的时候可以直接用矩阵拿来计算矫正intrinsic=(CvMat*)cvLoad("IntrinsicsMatrix.xml");distortion=(CvMat*)cvLoad("DistortionMatrix.xml");。。。cvInitUndistortMap(this->imgprocess.intrinsic,this->imgprocess.distortion,this->imgprocess.mapx,this->imgprocess.mapy);等2023-07-09 14:16:541
GIS与MIS相比,其数据可视化有哪些特点?
两者最大区别是gis包含空间信息,也就能很好地实现可视化,可以直观地反映事物、现象空间分布,进行相关的空间分析、可视化表达。2023-07-09 14:17:042
mapinfo中两个点的经纬度如何生成线
使用mapbasic或者在mapx、mapxtreme中使用程序语言创建一条折线。2023-07-09 14:17:142
帮我解决了我的600分全给你,VB实现双缓存问题
VB自带了一套画图API。不要用PICTURE BOX的那种那套好像是GRAFT的一套API,画图应该能搞定,包括3D构图。好像是WIN来构造3D做的东西我是在一本书上看到的,不过那书我现在还掉了。建议你去图书馆查一本带API的VB书,在图形里应该有相关的API介绍。。2023-07-09 14:17:223
mapinfo是什么软件?能简单介绍一下么?
MapInfo Professional 是一套业界中领先的Windows平台的地图化解决方案。使用MapInfo Professional,提供地图绘制、编辑、地理分析、网格影像等功能。 利用MapInfo提供的最佳决策支持系统,商业分析专家和GIS专家可以方便的将数据和地理信息的关系直观的展现。它复杂而深层次的可视化地理分析功能可以帮助用户在数据库中不同的数据之间建立关联,在同一个环境下显示,并迅速揭示数据之间的关系以及易被忽视的数据模式,从而作出快速有效的决策,提高运作效率,加强竞争能力。功能特色MapInfo Professional提供一整套功能强大的工具来进行复杂的商业地图化、数据可视化和GIS功能。通过MapInfo Professional可连接本地及服务器端的数据库,创建地图和图表以揭示数据行列背后的真正含义。也可以定制MapInfo Professional以满足用户的特定需要。事实上,电讯、民用、零售和政府等几乎所有领域都将MapInfo Professional应用到市场分析、选址、客户服务、应急等各方面。MapInfo Professional功能强大、简单易用、物超所值、是世界上领先的地图化解决方案。数据分析数据管理和访问数据.....下载地址:http://lib.verycd.com/2005/04/07/0000045369.htmlhttp://find.verycd.com/folders/mapinfo2023-07-09 14:17:324
什么是gis二次开发,举个例子
楼上正解补充一下:二次开发就好像堆积木一样,不需要自己去做积木,你所需的只是将积木重新组合,来制作新的产品2023-07-09 14:17:412
vb6.0中用什么软件画地图,teechart8.0可以吗?不会装这个控件,有人说6.0不能用这个版本。给我推荐个控件
6.0可以用这个啊2023-07-09 14:18:023
系统界面与基本功能
( 1) 本系统对 MIS,GIS 功能的体现预警本身就是一种信息,预警系统作为安全管理信息系统的子系统,包含了管理信息系统 ( 简称 MIS) 的一些基本功能,如: 对数据的显示、存储、查询、统计、输出等。其次,本开发系统是基于地理信息系统 MapX 控件实现的,而 MapX 是基于 ActiveX 技术的可编程控件,或称 ActiveX 组件。在主流的可视化程序开发环境中,例如运用 Visual Basic,Visual C + + ,Delphi 等进行编程,通过设置属性,调用方法和事件,就可实现空间数据的可视化,完成空间查询、地理编码、专题分析等丰富的地理信息系统功能,因此本系统基本功能也包含了地理信息系统的基本功能,支持地图的放大、缩小、漫游、选择操作以及地理数据查询等功能。( 2) 系统主界面及功能简介系统功能界面如图 8. 7 所示。图 8. 7 煤与瓦斯突出危险性预警系统功能界面功能界面 ( 服务器端) 包括: 标题栏、菜单栏、工具栏和地图窗口四部分。客户端端与服务器端基本相同,只是菜单栏没有设置 “编辑”菜单。1) 菜单栏。菜单栏包括文件、编辑 ( 客户端无此功能) 、设置、视图、地图、突出、工具以及帮助 8 个下拉菜单,如图 8. 8 所示,几乎包含了执行操作需要的所有命令。文件 用于报表输出、打印地图、存为图片以及退出子系统返回程序主界面。编辑 用于修改地图和属性数据,其中包含类似 Windows 常用的复制、粘贴、删除命令,当编辑工具栏显示为灰色时不可用。设置 用于对地图背景、图元是否闪烁、是否自动标注等功能的设置。视图 用于工具栏和状态栏的显示或隐藏选择。地图 使用户能够使用方便的手段查看地图,查找地物,进行地物统计。工具 用于选择使用的工具,与工具栏中同名的工具作用相同,除此之外还增加了框选功能,可用于多个图元同时选中。突出 用于存储与煤与瓦斯突出相关的历史数据、突出指标选择、相关法律法规查询等。帮助 提供系统的使用帮助。图 8. 8 预警系统功能菜单及子菜单结构图2) 工具栏。工具栏可以快速地访问常用地图菜单命令。为了显示或隐藏工具栏,可以选择 “视图”菜单的 “工具栏”命令。视图中工具栏前 “√”出现表示显示工具栏,反之表示隐藏工具栏,见表 8. 1。表 8. 1 工具箱中各功能图标的含义3) 地图窗口。地图窗口经过菜单栏命令或工具栏命令完成各种方式显示、编辑系统图以及预警信号的输出等人机交互功能。例如图 8. 9 为地图窗口用作显示选定图元闪烁显示地图界面,图 8. 10,图 8. 11 分别是系统自动设置警限的预警信号输出 ( 方式一) 与人工设置警限的预警信号输出 ( 方式二) 。为了方便使用,在地图窗口还可使用弹出式菜单,实现单击右键查看全图、图层控制、停止闪烁、地物居中等功能。2023-07-09 14:18:411
如何做.gst文件?
MapInfo是美国MapInfo公司的桌面地理信息系统软件,是一种数据可视化、信息地图化的桌面解决方案。它依据地图及其应用的概念、采用办公自动化的操作、集成多种数据库数据、融合计算机地图方法、使用地理数据库技术、加入了地理信息系统分析功能,形成了极具实用价值的、可以为各行各业所用的大众化小型软件系统。MapInfo 含义是“Mapping + Information(地图+信息)”即:地图对象+属性数据。MapInfo是个功能强大,操作简便的桌面地图信息系统,它具有图形的输入与编辑、图形的查询与显示、数据库操作、空间分析和图形的输出等基本操作。系统采用菜单驱动图形用户界面的方式,为用户提供了5种工具条(主工具条、绘图工具条、常用工具条、ODBC工具条和MapBasic工具条)。用户通过菜单条上的命令或工具条上的铵钮进入到对话状态。系统提供的查看表窗口为:地图窗口、浏览窗口、统计窗口,及帮助输出设计的布局窗口,并可将输出结果方便地输出到打印机或绘图仪。图形的输入图形的输入是将各种地图信息数据进行数字化或转换,以获得MapInfo的基本图形数据组织——表。随数据源的不同可用手扶数字化仪、扫描仪输入或其它标准数据格式转入。如AutoCAD的(.DXF和.DWG)、Intergraph的(.DGN)、ESRI的ArcView Shape数据等。利用MapInfo提供的绘图工具条,对地图数字化输入与编辑的要点为:1.正确设置地图的坐标系、投影、地图方向和单位MapInfo支持多种地图投影方式。用户数字化地图时,首先要设定该地图使用的坐标系和投影。由于大多数地图在图例中已指出这两项,用户可选择MapInfo提供的坐标系(存放在文本文件MAPINFOW.PRJ中),修改MAPINFOW.PRJ可得到新的坐标系。若要在MapInfo中显示栅格地图,必须配准该图象并为其设定投影。由于投影地图的过程通常不是完全可逆的,应该做好副本的备份工作;其次要根据选用的坐标系,设定使用的地图单位,例如经/纬度投影中的地图将以度显示地图坐标。2.设置控制点坐标为了在跟踪地图时能正确判读数字化仪移动头的位置,必须在地图上设置控制点坐标参数。至少选择4个控制点,控制点越多,从数字化板到地图的坐标变换越精确。选择的控制点离散性要好,如不能在一条直线上。可以在系统中增加、修改、删除控制点,并把控制点保存在工作空间中。3.绘图和编辑工具MapInfo具有一套完整的绘图和编辑工具,如图8-2所示。对图层进行编辑时首先要从地图菜单中选择“图层控制”命令或用“图层控制”工具按钮,使该图层处于可编辑的状态。4.利用对地理元素整形方式编辑地图地图编辑方式可对地图图层上的区域、折线、直线、圆弧和点进行整形。这个过程是通过移动、增加和删除定义线段的节点来完成的,也可通过复制和粘贴选择的节点来创建新的点、直线和折线。编辑过程中还可利用区域与折线的相互转换功能来查看区域对象的结点,或者利用合并、分割、擦除和叠压结点等辅助编辑功能。5.使用自动跟踪地图的功能自动跟踪对象的功能,用来自动跟踪获取重复边界,以避免重复数字化。打开对齐方式(用S键)则可激活自动跟踪。自动跟踪不适于跟踪由绘图工具制作的矩形、圆弧、椭圆等图形。2023-07-09 14:19:012
C#中调用Mapinfo地图
MapInfo的功能太强大了,在这里一字一句的哪能说清楚。你安装之后,不是有API文档么?2023-07-09 14:19:154
移动GIS软件可以选择哪些
android系统下比较有名气的是ucmap for android2023-07-09 14:19:353
移动GIS的主流开发平台
MapGIS移动GIS开发平台MapGIS Mobile 9,管理多源地理数据信息,集成空间位置与智能服务,精确传递云GIS服务与计算能力。 SuperMap 的SuperMap iMobile移动GIS开发平台,在移动终端提供了涵盖地图操作、数据采集、绘制编辑、空间分析、路径导航等移动GIS应用功能。ESRI的 Arcgis MobileMapInfo的 MapXMobile南京跬步ucmap北京灵图推出SmartInHand2023-07-09 14:19:441
想用C# 做一个类似于CAD的绘图窗口的数据显示窗口,可以实现窗口内内容跟随鼠标移动,并对其内容进行缩放
这个东西不错。楼主挺有想法啊!期待这个功能的出现。2023-07-09 14:20:004
百度地图坐标拾取系统拾取的坐标怎样导入arcmap
map.addEventListener("click", function(e){ //点击事件 //alert(e.point.lng + ", " + e.point.lat); document.getElementById("mapx").innerHTML="鼠标当前x位置:"+e.point.lng; document.getElementById("mapy").innerHTML="鼠标当前y位置:"+e.point.lat; document.getElementById("level").innerHTML="缩放等级:"+this.getZoom(); });2023-07-09 14:20:071
3dsmax2014安装卡在12
3D max2014版在安装时如果安装不上并提示某些产品无法安装,这说明缺少程序需要的安装组件,可以下载用驱动人生,安装游戏必备组件进行解决2023-07-09 14:20:173
arcgis中的shp地图格式怎么转转mapinfo中的gst地图格式
楼上的都说的很对。gst是mapinfo的数据组织文件,你先把你的shp转换为mapinfo的格式。mapinfo软件自己也可以转换2023-07-09 14:20:263
学地理信息系统的学生可以看哪些书?
首先得看一下地理信息系统导论,有个基本框架,然后看看地理信息系统原理也可以,地理信息系统也有很多分支的,看你对哪方面比较感兴趣一点就可以选择哪方面的书籍2023-07-09 14:20:375
如何在vs2010中使用Mapinfo的控件(已经安装了Mapinfo professional 10 和MapXtreme 7.0)
mapxtreme是搞网络开发的,你想搞网络开发还是普通开发,如果是后者 需要安装mapx控件,前者吧 不用 ,你到c盘安装mapxtreme的文件夹里面打开那些例子 就可看到,2023-07-09 14:21:051
热血江湖挂机脚本
家等了好久```` 很多人都想要这个脚本!今天我发布出来与大家分享```希望大家能用的习惯 本脚本只适合挂主动区!自动检物。 VBS dim mX1,mY1,mX2,mY2 Gosub 补红蓝 Gosub 读取坐标 VBS mX1=MapX VBS mY1=MapY SayExpression "("+CStr(mX1)+","+CStr(mY1)+")"+".准备好了没" Rem 挂机开始 Gosub 补红蓝 Gosub 判断坐标 Gosub 找怪开始 KeyPress 120 1 Delay 100 Goto 挂机开始 Sub 找怪开始 Rem 继续 Gosub 补红蓝 KeyDown 120 1 Delay 80 KeyUp 120 1 MoveTo 1300 460 Delay 150 MoveTo 1300 460 Delay 140 MoveTo 513 460 Delay 20 LeftClick 1 Delay 100 KeyDown 114 1 Delay 100 KeyUp 114 1 Delay 50 Gosub 补红蓝 VBSCall Call FindColor(150,150,750,650,"1028FF",x1,y1) If x1<0 and y1<0 Delay 50 Goto 继续 Else Gosub 打怪 EndIf Return 找怪开始 Sub 打怪 Rem KG KeyDown 120 1 Delay 80 KeyUp 120 1 Gosub 补红蓝 KeyDown 114 1 Delay 100 KeyUp 114 1 Delay 50 Gosub 补红蓝 VBSCall Call FindColor(150,150,750,650,"00107B",x1,y1) If x1<0 and y1<0 Gosub 补红蓝 Delay 200 MoveTo 1300 460 Delay 150 MoveTo 513 460 Delay 200 Goto 挂机开始 Else Goto KG EndIf Return 打怪 Sub 判断坐标 Gosub 读取坐标 VBS mX2=MapX VBS mY2=MapY VBS MuBiaoY=mY1 VBS MuBiaoX=mX1 If Abs(mX1-mX2)+Abs(mY1-mY2)>20 Gosub 自动行走 EndIf Return 判断坐标 Sub 读取坐标 VBS MapX,MapY VBS x=876:y=24 VBS MapXY="" VBS i=0:j=0:k=0 For 12 Delay 16 Gosub 读取数字 Rem 读取完毕 If txt="]" Goto 输出坐标 EndIf VBS MapXY=MapXY&txt VBS x=x+6 EndFor Rem 输出坐标 VBS i=InStr(MapXY, ".") If txt="]" and i>1 VBS MapX=Clng(Left(MapXY, i - 1)) VBS MapY=Clng(Mid(MapXY, i + 1)) EndIf Return 读取坐标 Sub 读取数字 IfColor x+1 y+4 0002BD 2 IfColor x+3 y+4 0002BD 2 IfColor x+5 y+4 0002BD 2 VBS txt="-" Goto 读取完毕 EndIf EndIf EndIf IfColor x+2 y+8 0002BD 2 IfColor x+3 y+8 0002BD 2 Else VBS txt="." Goto 读取完毕 EndIf EndIf IfColor x+2 y 0002BD 2 VBS txt="]" Goto 读取完毕 EndIf IfColor x+1 y+4 0002BD 2 IfColor x+1 y+5 0002BD 2 IfColor x+5 y+4 0002BD 2 VBS txt="0" Goto 读取完毕 EndIf EndIf EndIf IfColor x+2 y+2 0002BD 2 VBS txt="1" Goto 读取完毕 EndIf IfColor x+1 y+8 0002BD 2 IfColor x+5 y+8 0002BD 2 VBS txt="2" Goto 读取完毕 EndIf EndIf IfColor x+1 y+7 0002BD 2 IfColor x+2 y+4 0002BD 2 Else IfColor x+3 y+4 0002BD 2 VBS txt="3" Goto 读取完毕 EndIf EndIf EndIf IfColor x+2 y+3 0002BD 2 IfColor x+4 y+3 0002BD 2 VBS txt="4" Goto 读取完毕 EndIf EndIf IfColor x+1 y+1 0002BD 2 IfColor x+1 y+7 0002BD 2 VBS txt="5" Goto 读取完毕 EndIf EndIf IfColor x+4 y+2 0002BD 2 IfColor x+4 y+3 0002BD 2 Else VBS txt="6" Goto 读取完毕 EndIf EndIf IfColor x+1 y+1 0002BD 2 IfColor x+4 y+3 0002BD 2 VBS txt="7" Goto 读取完毕 EndIf EndIf IfColor x+1 y+4 0002BD 2 Else IfColor x+1 y+5 0002BD 2 IfColor x+5 y+5 0002BD 2 VBS txt="8" Goto 读取完毕 EndIf EndIf EndIf IfColor x+1 y+4 0002BD 2 IfColor x+2 y+7 0002BD 2 IfColor x+5 y+4 0002BD 2 VBS txt="9" Goto 读取完毕 EndIf EndIf EndIf Return 读取数字 Sub 自动行走 VBS FangX=0 VBS YDR=160 Gosub 补红蓝 MoveTo 512 460 Delay 100 Gosub 读取坐标 VBS JuLi1=sqr((MapX-MuBiaoX)^2+(MapY-MuBiaoY)^2) Rem 移动 Gosub 补红蓝 If JuLi1>20 Rem 方向右 If FangX=0 MoveTo 512+YDR 460 LeftClick 1 Delay 20 Gosub 补红蓝 Delay 200 KeyDown 120 1 Delay 50 KeyUp 120 1 Delay 200 Gosub 补红蓝 Gosub 读取坐标 VBS JuLi2=sqr((MapX-MuBiaoX)^2+(MapY-MuBiaoY)^2) If JuLi2<JuLi1 VBS FangX=0 VBS JuLi1=JuLi2 Goto 移动 Else VBS FangX=1 VBS JuLi1=JuLi2 Goto 移动 EndIf EndIf Rem 方向下 If FangX=1 MoveTo 512 460+YDR LeftClick 1 Delay 20 Gosub 补红蓝 Delay 200 KeyDown 120 1 Delay 50 KeyUp 120 1 Delay 200 Gosub 补红蓝 Gosub 读取坐标 VBS JuLi2=sqr((MapX-MuBiaoX)^2+(MapY-MuBiaoY)^2) If JuLi2<JuLi1 VBS FangX=1 VBS JuLi1=JuLi2 Goto 移动 Else VBS FangX=2 VBS JuLi1=JuLi2 Goto 移动 EndIf EndIf Rem 方向左 If FangX=2 MoveTo 512-YDR 460 LeftClick 1 Delay 20 Gosub 补红蓝 Delay 200 KeyDown 120 1 Delay 50 KeyUp 120 1 Delay 200 Gosub 补红蓝 Gosub 读取坐标 VBS JuLi2=sqr((MapX-MuBiaoX)^2+(MapY-MuBiaoY)^2) If JuLi2<JuLi1 VBS FangX=2 VBS JuLi1=JuLi2 Goto 移动 Else VBS FangX=3 VBS JuLi1=JuLi2 Goto 移动 EndIf EndIf Rem 方向上 If FangX=3 MoveTo 512 460-YDR LeftClick 1 Delay 20 Gosub 补红蓝 Delay 200 KeyDown 120 1 Delay 50 KeyUp 120 1 Delay 200 Gosub 补红蓝 Gosub 读取坐标 VBS JuLi2=sqr((MapX-MuBiaoX)^2+(MapY-MuBiaoY)^2) If JuLi2<JuLi1 VBS FangX=3 VBS JuLi1=JuLi2 Goto 移动 Else VBS FangX=0 VBS JuLi1=JuLi2 Goto 移动 EndIf EndIf EndIf Return 自动行走 Sub 补红蓝 IfColor 81 10 42415A 2 KeyPress 112 1 Delay 400 EndIf Delay 10 IfColor 46 24 524139 2 KeyPress 115 1 Delay 400 EndIf Delay 10 Return 补红蓝 我的取名是综合挂机 F1红,F3技能,F4蓝,F9捡东西 F11启动,F12停止2023-07-09 14:21:121
InstallShield嵌套安装(winform安装程序如何在打包的时候将其他安装包也打进去)
今天正好用InstallShield2013 Limited Edition成功打包发布。【参考】http://blog.csdn.net/zhang_xinxiu/article/details/9099757文章中的第4步:参照给出的步骤,你可以把JPG加入到安装包中同时将mapx5.0控件也加入到安装包;再参照第6步,让mapx5.0在安装时自动注册。2023-07-09 14:21:192
GST是什么文件 ?用什么方式打开?
GST文件,类似MapInfo中的WorkSpace概念,是图层及其设置的集合,控制程序中显示的地图。也可以在运行阶段设置GeoSet,此时将导致已经加载的所有图层和DataSet被删除而由GeoSet中定义的图层所代替。如果单纯地想删除所有图层,只需给GeoSet赋一个空字符串即可。 可以使用GeoSet Manager程序来管理GeoSet 文件(*.GST)。默认情况下.GST文件存储在…\mapxmaps目录下,可以调用GeoDictionary Manager程序进行修改,指向用户程序数据所在的位置。2023-07-09 14:21:261
GIS行业软件MapInfo正版多少钱?
mapinfo系列有很多软件,mapinfoprofessional、mapx、mapxtreme2008等,具体不知道你要问的是那个。我们公司最新购买了一套mapxtreme2008B/S的开发包,价格是14万。正版购买的话一般是通过代理商,mapinfo公司不直接销售。我们购买的那家代理商电话是020-86005931,公司名称是广州哈图信息技术有限公司,你可以联系他们,服务很好。2023-07-09 14:21:331
Python爬虫如何与Mapinfo联动?
其实是可以的,python 通过DDE 向mapinfo发送 mabasic命令,让mapinfo执行就行,你要用鼠标点击点显示信息,不用联动也行,python爬取数据后生成mif格式,mapinfo导入mif数据转成tab图层,在mapinfo里面就能操作了,2023-07-09 14:21:402
查询分析
SQL ( Structure Query Language) 是结构化查询语言,是一套强大的查询系统,因其语言简单、指令简洁、操作简单、功能强大,被广泛运用在相互关联的数据库中,并能完成十分复杂的查询、选择。再配合 MapBasic 语言,结合 MapBasic 中的地理信息系统空间分析函数,不但使 MapBasic 在处理属性数据时功能更加完善,而且可以应用 SQL 直接进行空间分析。SQL 除进行数据查询外,还可以进行数据分类,以查询条件表达式作为数据分组或排序的依据。SQL 所提供的函数,更加强了 SQL 的功能。在查询菜单中有 “选择”和 “SQL 选择”两个命令,两者的区别主要如下:1) “选择” 生成的记录完全依赖于基础表中的信息,而 “SQL 选择” 则可以创建隐含在基础表中的信息,也就是说,可以利用基础表中的记录由表达式派生新的信息。2) “SQL 选择” 可以利用聚合函数以便只查看 “分类汇总值” 的列,而不是整张表;能将两张或更多表合并成一张结果表,或只显示感兴趣的行或列。3) “SQL 选择” 可以利用基础表中的数据,当基础表中没有此类数据,而在图形对象中可以构成此类数据。例如,基础表中没有区域面积的数值,而可以利用图形中的区域对象计算出面积,利用图形中的可看到对象计算出河道的长度,利用图形中的湖泊、水库对象计算出相应的面积。4) “SQL 选择” 将通过 “SQL 选择” 对话框来实施。使用 “SQL 选择”的通常步骤如下:1) 打开希望查询的表: 要查询的表称为基础表。若用 “SQL 选择” 对 Word 表查询,Word 表就是基础表。2) 选择 “查询→SQL 选择”: 将 “SQL 选择”对话框的各部分按需要填好,单击“确定”后,MapInfo 执行查询,如图 6. 10 所示。图 6. 10 安全监控系统传感器查询结果部分程序可表示如下:Private Sub Command1_Click( )On Error Resume NextIf Text1. Text = " " ThenMsgBox " 请输入关键字! " ,vbInformation," 错误"Exit SubEnd IfDim ftrs As MapXLib. FeaturesDim mylay As MapXLib. LayerDim resulenum As IntegerDim ying As StringDim i As IntegerDim searchstr As Stringying = Chr( 34)searchstr = " 名称 like " & ying & " % " & Trim( Text1. Text) & " % " & yingFor Each mylay In map. Layersmylay. Selection. ClearSelectionNextListView1. ListItems. ClearDim listvitem As ListItemFor Each mylay In map. LayersIf mylay. Name < > " 地图边界" And mylay. Name < > " 地图网格" ThenSet ftrs = mylay. Search( searchstr)If ftrs. Count < > 0 ThenFor i = 1 To ftrs. Countresulenum = resulenum + 1Set listvitem = ListView1. ListItems. Add( ,,ftrs( i) . Name)listvitem. SubItems( 2) = ftrs( i) . FeatureIDlistvitem. SubItems( 1) = ftrs( i) . Layer. NameNext imylay. Selection. Replace ftrsEnd IfEnd IfNextMe. Caption = " 共找到" & resulenum & " 个结果! "End Sub2023-07-09 14:21:491
梦幻西游的地图是什么格式的
《大话西游II》和《梦幻西游》地图文件格式读取类 实现代码此类是本人编写的,主要用于读取《大话西游II》和《梦幻西游》地图文件格式, 而对于地图中各个单元的处理功能不包含在这个类中,可以写其他相关的类做这个方面的处理.本类主要用在教学研究方面,不得应用在商业领域以及其他侵害网易公司利益的地方. 本人不保证此类的安全和质量.如有疑虑请勿使用.参考资料:Map File Old FormatMap File New Format大话1302新地图格式大话0038新地图格式/********************************************************************************************** 《大话西游II》和《梦幻西游》* 地图文件格式读取类*---------------------------------------------------------------------------------------------* 版本 2.2.0** 王大理 <wdl@sina.com>* 2006年05月20日*---------------------------------------------------------------------------------------------* 声明:* 本源代码应用于网易公司的网络游戏《大话西游II》和《梦幻西游》地图文件格式的读取。* 与此源代码相应的文件格式版权属于网易公司所有。* 此源代码应用于教育目的,禁止用于商业目的,否则后果自负,本源代码作者不承担任何责任。* 如有异议请务使用本源代码,并永久删除此源代码。*---------------------------------------------------------------------------------------------* 版权所有(c) 2006 王大理 , 保留所有权利。*********************************************************************************************/#include "ReadGameMap.h"using namespace NetEase; // 使用NetEase命名空间ReadGameMap::ReadGameMap(void){ //m_MapWidth=0; // 初始化地图的宽度 //m_MapHeight=0; // 初始化地图的高度 m_SubMapWidth=320; // 初始化子地图宽度 m_SubMapHeight=240; // 初始化子地图高度 m_MaskTemp=1; // 初始化MASK临时变量 //m_SubMapRowNum=0; // 子地图的行数量 //m_SubMapColNum=0; // 子地图的列数量 //m_SubMapTotal=0; // 子地图的总数}ReadGameMap::~ReadGameMap(void){}// 加载地图文件bool ReadGameMap::LoadMap(char *filename){ FILE *fp; //m_FileName=filename; // 全局变量地图文件名 strcpy(m_FileName,filename); // 打开流 if( (fp = fopen(m_FileName, "rb" )) == NULL) { printf("打开文件错误。 "); return false; } // 读取地图文件头 MapHeader header; fread(&header, sizeof(MapHeader), 1, fp); // 读取地图文件头 m_MapWidth=header.Width; // 地图的宽度 m_MapHeight=header.Height; // 地图的高度 m_SubMapRowNum=ceil((float)(m_MapWidth/m_SubMapWidth)); // 计算行中子地图的数量 m_SubMapColNum=ceil((float)(m_MapHeight/m_SubMapHeight)); // 计算列中子地图的数量 m_SubMapTotal=m_SubMapRowNum*m_SubMapColNum; // 计算地图中总的子地图数量 //printf("Flag=0x%X ",header.Flag); //printf("Width=%d ",header.Width); //printf("Height=%d ",header.Height); //printf("m_SubMapTotal=%d ",m_SubMapTotal); // 判断文件头是否正确(MAPX) && (M1.0) if((header.Flag!=0x4D415058) && (header.Flag!=0x4D312E30)) { printf("未支持的地图文件格式。 "); return false; } // 读取子地图偏移值列表 m_SubMapOffsetList=new uint32[m_SubMapTotal]; // 自动分配列表空间 fread(m_SubMapOffsetList, sizeof(uint32), m_SubMapTotal, fp); // 读取列表 fread(&m_MapSize, sizeof(uint32), 1, fp); // 读取文件大小或文件头的大小 //printf("m_SubMapOffsetList=0x%X ",m_SubMapOffsetList[60]); // MAPX if (header.Flag == 0x4D415058) { ReadJPGH(fp); // 读取JPGH的数据 m_FileType=1; // 设置地图文件类型 } // M1.0 if (header.Flag == 0x4D312E30) { ReadHEAD(fp); // 读取新地图的数据 m_FileType=2; // 设置地图文件类型 } fclose(fp); // 关闭流 return true;}// 读取地图JPGH的数据bool ReadGameMap::ReadJPGH(FILE *fp){ UnitHeader JpegHead; fread(&JpegHead,sizeof(JpegHead),1,fp); // 读取单元头的数据 // 判断标志是否正确(HGPJ) if (JpegHead.Flag!=0x4A504748) { printf("JPEG HEADER 标志错误。 "); return false; } m_jpgh.Data = new uint8[JpegHead.Size]; // 分配单元数据的内存空间 m_jpgh.Size=JpegHead.Size; fread(m_jpgh.Data,JpegHead.Size,1,fp); // 读取单元数据 //PrintHex(m_JpegHeadDate,JpegHead.Size); return true;}// 读取地图HEAD的数据bool ReadGameMap::ReadHEAD(FILE *fp){ uint32 HeaderSize; HeaderSize=m_SubMapOffsetList[0]-m_MapSize; // 计算地图头数据的大小 m_head.Size=HeaderSize; m_head.Data = new uint8[HeaderSize]; fread(m_head.Data,sizeof(uint8),HeaderSize,fp); // 读取地图头数据 //PrintHex(MapHeadData.Data,MapHeadData.Size); return true;}// 读取地图的单元数据bool ReadGameMap::ReadUnit(uint32 UnitNum){ FILE *fp; int64 seek; bool Result; bool loop=true; char * filename; m_MaskTemp=1; // 打开流 //printf("m_FileName=%s ",m_FileName); if( (fp = fopen(m_FileName, "rb" )) == NULL) { printf("打开文件错误。 "); return false; } seek=m_SubMapOffsetList[UnitNum]; //printf("Seek=0x%X ",seek); fseek(fp,seek,SEEK_SET); fread(&m_MaskNum,sizeof(uint32),1,fp); // 读取MASK的数量 //printf("m_MaskNum=%d ",m_MaskNum); // 新地图使用 if ((m_FileType==2) && (m_MaskNum>0)) { //printf("New Map! "); m_MaskList = new uint32[m_MaskNum]; fread(m_MaskList,sizeof(uint32),m_MaskNum,fp); } UnitHeader unit; while(loop) { fread(&unit,sizeof(UnitHeader),1,fp); // 读取单元的头数据 //printf("单元标志=%X ", unit.Flag); //printf("单元大小=%d ", unit.Size); switch(unit.Flag) { // GAMI "47 41 4D 49" case 0x494D4147: Result=ReadIMAG(fp,unit.Flag,unit.Size); break; // GEPJ "47 45 50 4A" case 0x4A504547: Result=ReadJPEG(fp,unit.Flag,unit.Size); break; // KSAM "4B 53 41 4D" case 0x4D41534B: Result=ReadMASK(fp,unit.Flag,unit.Size); break; // KOLB "4B 4F 4C 42" case 0x424C4F4B: Result=ReadBLOK(fp,unit.Flag,unit.Size); break; // LLEC "4C 4C 45 43" case 0x43454C4C: Result=ReadCELL(fp,unit.Flag,unit.Size); break; // GIRB "47 49 52 42" case 0x42524947: Result=ReadBRIG(fp,unit.Flag,unit.Size); loop=false; break; // 默认处理 default: m_EndUnit.Flag=unit.Flag; m_EndUnit.Size=unit.Size; loop=false; //printf("Flag错误! "); //printf("Flag=0x%X ",unit.Flag); break; //return false; } } fclose(fp);}// 读取地图宽度uint32 ReadGameMap::ReadMapWidth(){ return m_MapWidth;}// 读取地图高度uint32 ReadGameMap::ReadMapHeight(){ return m_MapHeight;}// 读取子地图的宽度uint32 ReadGameMap::ReadSubMapWidth(){ return m_SubMapWidth;}// 读取子地图的高度uint32 ReadGameMap::ReadSubMapHeight(){ return m_SubMapHeight;}// 读取子地图的总数量uint32 ReadGameMap::ReadSubMapTotal(){ return m_SubMapTotal;}// 读取子地图中Mask的总数uint32 ReadGameMap::ReadMaskTotal(){ return m_MaskNum;}// 读取地图文件大小uint32 ReadGameMap::ReadMapSize(){ return m_MapSize;}// 读取地图IMAG的数据bool ReadGameMap::ReadIMAG(FILE *fp, uint32 Flag, uint32 Size){ if (Flag==0x494D4147) { m_imag.Data = new uint8[Size]; // 分配单元数据的内存空间 fread(m_imag.Data,Size,1,fp); // 读取单元IMAG的数据 m_imag.Size=Size; //printf("IMAG的数据: "); //PrintHex(m_ImagData,Size); } else { printf("IMAG标志错误! "); return false; } return true;}// 读取地图JPEG的数据bool ReadGameMap::ReadJPEG(FILE *fp, uint32 Flag, uint32 Size){ if (Flag==0x4A504547) { fread(&m_SubMapWidth,sizeof(uint16),1,fp); // 子地图的宽度 fread(&m_SubMapHeight,sizeof(uint16),1,fp); // 子地图的高度 m_jpeg.Data = new uint8[Size-4]; // 分配单元数据的内存空间 fread(m_jpeg.Data,Size-4,1,fp); // 读取单元JPEG的数据 m_jpeg.Size=Size; //printf("JPEG的数据: "); //PrintHex(m_JpegData,Size-4); } else { printf("JPEG标志错误! "); return false; } return true;}// 读取地图MASK的数据bool ReadGameMap::ReadMASK(FILE *fp, uint32 Flag, uint32 Size){ if (Flag==0x4D41534B) { //printf("m_MaskTemp=%d ",m_MaskTemp); m_mask[m_MaskTemp].Data = new uint8[Size]; // 分配单元数据的内存空间 m_mask[m_MaskTemp].Size=Size; fread(m_mask[m_MaskTemp].Data,Size,1,fp); // 读取单元MASK的数据 //printf("MASK的数据: "); //PrintHex(mask[m_MaskTemp].m_MaskData,Size); m_MaskTemp++; } else { printf("MASK标志错误! "); return false; } return true;}// 读取地图BLOK的数据bool ReadGameMap::ReadBLOK(FILE *fp, uint32 Flag, uint32 Size){ if (Flag==0x424C4F4B) { m_blok.Data = new uint8[Size]; // 分配单元数据的内存空间 fread(m_blok.Data,Size,1,fp); // 读取单元BLOK的数据 m_blok.Size=Size; //printf("BLOK的数据: "); //PrintHex(m_BlokData,Size); } else { printf("BLOK标志错误! "); return false; } return true;}// 读取地图CELL的数据bool ReadGameMap::ReadCELL(FILE *fp, uint32 Flag, uint32 Size){ if (Flag==0x43454C4C) { m_cell.Data = new uint8[Size]; // 分配单元数据的内存空间 fread(m_cell.Data,Size,1,fp); // 读取单元CELL的数据 m_cell.Size=Size; //printf("CELL的数据: "); //PrintHex(m_CellData,Size); } else { printf("CELL标志错误! "); return false; } return true;}// 读取地图BRIG的数据bool ReadGameMap::ReadBRIG(FILE *fp, uint32 Flag, uint32 Size){ if (Flag==0x42524947) { m_brig.Data = new uint8[Size]; // 分配单元数据的内存空间 fread(m_brig.Data,Size,1,fp); // 读取单元BRIG的数据 m_brig.Size=Size; //printf("BRIG的数据: "); //PrintHex(m_BirgData,Size); } else { printf("BRIG标志错误! "); return false; } return true;}// 读取JPGH的数据MapData ReadGameMap::ReadJpghData(){ return m_jpgh;}// 读取HEAD的数据MapData ReadGameMap::ReadHeadData(){ return m_head;}// 读取IMAG的数据MapData ReadGameMap::ReadImagData(){ return m_imag;}// 读取JPEG的数据MapData ReadGameMap::ReadJpegData(){ return m_jpeg;}// 读取MASK的数据MapData ReadGameMap::ReadMaskData(uint8 ID){ return m_mask[ID];}// 读取BLOK的数据MapData ReadGameMap::ReadBlokData(){ return m_blok;}// 读取CELL的数据MapData ReadGameMap::ReadCellData(){ return m_cell;}// 读取BRIG的数据MapData ReadGameMap::ReadBrigData(){ return m_brig;}2023-07-09 14:21:571
.dig .dxf .mtx 是什么文件 用什么软件可以打开
我用HYPACK,你要几个这几种格式的文件?DXF是AUTOCAD产品中鼎鼎大名的一种中介产品,许多工程专用软件都可以通过它来进行数据交换。MTX是HYPACK的色块文件啊。其他功能不清楚你到底想知道什么,说清楚点2023-07-09 14:22:072
GIS是什么意思?
GeographicInformationSystem电力地理图形信息系统电力系统是一个庞大复杂的系统,无论是信息的覆盖面、深度、广度等都是一般系统无法比拟的。电力系统每天都要产生大量的与地理位置有关的信息,要充分发挥现有设备的能力,必须能及时、准确地掌握这些信息并进行快速的处理与分析。目前情况下,所有信息既具有一定的独立性,又有相关性。但直到现在,对这些信息的管理仍旧是分散的、孤立的。这在很大程度上影响了工作的高效性和科学性。在电力系统正在走向市场竞争,面临挑战的今天,如何组织和管理电力系统信息越来越受到人们的重视。国、内外经验证明,要做到上述一切,没有一个面向电力行业的地理图形信息系统(GeographicInformationSystem,简称GIS)是无法想象的。从目前的情况来看,GIS技术在我国城市规划管理、测绘勘探、房地产、银行、铁路交通、自然资源管理这些领域的应用比较普遍,而在其它方面尚处于初始发展阶段。在电力系统领域里,除了对国外的商用GIS软件二次开发后的一些有限应用外,尚无真正的运用于该领域的成熟的GIS技术。而现今我国各级电力部门在规划、运行中应用GIS技术的需求却日益迫切,主要基于以下几点原因:l现代社会日益向高度信息自动化发展,电力系统也不例外。电网规模的日益扩大,需要管理庞大的信息数据。而科学的决策在某种程度上依赖于决策者所掌握的信息量的大小。发电、输电、变电到配电系统均是包含大量信息的复杂系统,而GIS可以最大限度地将有关信息集成起来,从而为电力系统决策人员提供一个多元化的决策依据。电网互联技术的发展,导致电力系统地域的扩大。在规划选址、经济运行中涉及到诸多相互关联的因素,如资源、人口、经济发展、社会活动等,无一不与地理系统有关。将地理信息作为电力系统管理的主线,能够形象、直观地描述系统,有效地组织数据信息。在电力系统信息自动化中,协调各部门的工作是非常重要的。GIS可以通过网络技术将不同部门、不同工作联成一个有机整体,在一定权限上实现信息的共享。同时,信息的高度有效集成又有利于科学的决策。总之,现代电力系统分布地域的广阔性及信息的复杂性预示着GIS系统在这一领域将大有作为。开发适合电力系统特点的GIS系统,是当前电力系统工程技术人员的一项紧迫的任务。随着GIS及其相关技术的发展,AM/FM/GIS(AutomatedMapping/FacilitiesManagement/GeographicInformationSystem,即自动制图/设备管理/地理图形信息系统)已成为一门独立的技术分支,它在城市供配电系统的规划和管理中开始得到广泛应用,成为供配电系统各种自动化的基础。其特点在于以地理信息为背景,将图形软件与数据库相结合来描述和管理各种电力设备的参数属性以及电网内的运行控制信息。在离线方面,AM/FM/GIS的主要应用有设备管理系统、用电管理系统、规划设计系统。而在在线应用上,AM/FM/GIS主要和SCADA系统结合,互相交换运行数据和图形数据,为调度员提供准确的电网地理信息;另外,它还可以用作DMS的投诉电话热线系统,快速、准确地根据用户打来的大量故障投诉电话判断发生故障的地点以及抢修队伍目前所处的位置,及时派出抢修人员,使停电时间最短。开发电力系统的AM/FM/GIS技术是解决城市供配电行业当今所面临的问题的最佳选择。在不断提高供电可靠性及供电服务质量的同时,又要尽可能降低供电运行管理成本,这是供电部门当前工作中必须解决的主要矛盾。面对密织的电网,浩繁的设备、变迁中的区域,以及对用户服务的承诺,供电部门一直在寻求现代化的技术手段来满足其强烈的要求:如何用计算机来描述和管理复杂多变的电网;如何保证设备资料的时效性和完整性;如何通过信息系统资源的共享和智能化决策支持来提高运行管理的效率;如何对配电设施进行自动化处理;如何妥善安排检修计划,缩短故障修复时间……。更为重要的是,为达到上述目标而采用的技术手段能够让运行人员感到直观、简洁、方便。AM/FM/GIS为解决上述问题提供了合理、高效、完整的解决方案。我们主要研究在含地理信息的环境中实现对电力设施信息和用户信息的计算机管理,将电力设备信息和地理背景图有机地结合起来2023-07-09 14:22:172
GIS的功能
http://zhidao.baidu.com/question/24300297.html?si=12023-07-09 14:22:394
ArcGIS地理信息系统平台的功能和性能?
ArcIMS的定位是空间数据发布系统,虽然也可以做进一步定制和开发,但因为ArcIMS的定位,有些事情很难或无法实现,例如无法(很难)使用ArcIMS进行复杂的空间分析(嗯,可以调用AO或者MO,这个另当别论)。 ArcIMS和目前的ArcGIS Server不是一个基础,后者基于由COM实现的AO,不过由于ArcIMS任务单一,所以效率较高,而且可以跨平台(核心代码应该是ArcInfo时代的纯C++)。 Web服务器的Application Server Connector和ArcIMS的应用服务器(Application Server)的通信是基于Servlet发送ArcXML,因此需要安装Java环境和Servlet运行环境。ArcIMS的Author和Design、Administrator也是基于Java实现。 ArcIMS的几个主要部件: Application Server Connectors,即ArcIMS定制开发的API,有Java、ActiveX、.net等API,但最终和Application Server通信,都需要将请求转换为ArcXML,由Servlet Connector发送给Application Server,这也是为什么ArcIMS需要一个Servlet运行环境的原因; Application Server,应该是基于Java实现,主要用于维护Spatial Server的状态及其与Web服务器的交互。 Spatial Server,核心的地图渲染器,基于C++实现?主要用于根据请求渲染地图,即地图render。 ArcIMS的开发模式: 使用Author、Designer通过可视化方式来设计地图,发布,无须编程; 使用Connectors来开发,目前可以使用ASP、.net、Java等等方式来开发。 闲话,记得有过ArcView IMS,MO IMS的产品,没有使用过,应该是类似MapXtreme for Windows的产品,这个东东是基于MapX实现的,而MapXtreme.net和MapXtreme for Java则是比较纯粹的产品。 ArcIMS的核心是ArcXML,ArcXML是Web服务器的Application Server Connector,Application Server,Spatial Server之间的通讯协议(语言),其调用模式类似Web Service。 这个结构应该是在ArcIMS 3.0的时候就确定下来的,之后基本没有什么变化。ArcIMS 3.0的发布时间是2000年,而2000年正是3-tier架构开始成为主流的年代。每层具体的说明可以查看ArcIMS的文档,早先的文档和资料一般把客户端归于表现层,Web Server、Application Server、Spatial Server归于逻辑层,空间数据归于数据层。其实与这些层次做一一对应也无大的必要。其中的Web Server及Application Server Connectors可以部署在一台计算机;Application Server可以部署在一台计算机;而Spatial Server可以部署于多台计算机,由Application Server管理;数据则可以是文件,SDE等格式。实际中,一般把Spatial Server安装于多台计算机,因为Spatial Server是整个系统中负荷最重的部分,执行了大部分的运算任务。Application Server管理Spatial Server,处理ArcXML请求,并返回ArcXML的结果,对于不同的开发接口(Connector),或者也处理这样的XML,或者由 Connector封装了此类请求,然后在后台与Application Server交互。运行于Application Server的地图服务(Service)是无状态的,也就是说他只是根据ArcXML请求,调度Spatial Server来不断的生成图片或者其他数据,然后以ArcXML的格式返回给Web Server的Application Server Connectors。因此,用户(地图)的状态,例如当前的缩放比例,位置等,或者在Web服务器端通过Seesion保留,或者在客户端通过某种方式保留(如表单的隐藏域,Url参数等等)。开发模式与运行机制使用ArcIMS的设计工具Author、Designer来编辑Axl定义文件,增加地图服务,定制Html客户端或者Java客户端,发布地图服务,这种开发模式都属于客户端处理模式;而使用ActiveX Connector,.Net Link的方式开发,则属于服务器端处理模式。这里的处理是指处理ArcXML。 这种模式下,客户端的请求已经是ArcXML格式封装的,然后由Web服务器委托Application Server Connectors处理,由于请求已经是ArcXML格式,Connector的任务只是简单的把请求转发给Application Server。这种模式下,发送和返回请求都需要在客户端来处理,因此,ArcIMS的Html客户端的JS代码行数达到万行级别,也就不奇怪了。另外,返回和发送ArcXML,其中很多数据都是无关紧要或者不需要的,对于网络通信,也是一个负担。得到服务器端返回的ArcXML后,客户端JS负责解析,然后再在服务器下载需要的图片,显示在客户端。相关的代码在HtmlViewer的Javascript代码的aimsMap.js这个文件内,一般的地图操作设置参数后调用sendMapXML函数,然后此函数再调用sendToServer函数,最后由htmlSendToServer通过表单方式发送请求(没有使用XMLHttpRequest对象,所有XML操作都是由JS完成)。ArcIMS文档中的“Customizing_the_HTML_Viewer.pdf”中对 HtmlViewer的结构、运行原理、定制有详细的说明,可以作为参考。对于ArcExplorer,JavaViewer等都是使用客户端处理模式。在GIS发展的早期,专业人士主要关注于数据编辑或者集中于应用工程,以及主要把精力花费在创建GIS数据库并构造地理信息和知识。慢慢的,GIS的专业人士开始在大量的GIS应用中使用这些知识信息库。用户应用功能全面的GIS工作站来编辑地理数据集,建立数据编辑和质量控制的工作流,创建地图和分析模型并将这些工作和方法记录成文档。 这加强了GIS用户的传统观念,这些用户往往拥有连接在数据集和数据库上的专业工作站。这种工作站拥有复杂的GIS应用以及用来实现几乎所有GIS任务的逻辑和工具。 这种对GIS软件所处位置的看法已经被证明非常有价值,被约全球二十万组织中的GIS专业人士所接受。事实上,这种客户-服务器的计算模式是如此的成功以至于让许多人认为GIS只有这样的模式。但是,对GIS的观念在不断的扩展。 近期Internet的发展,DBMS技术的长足进步,面向对象编程语言,移动设备以及GIS的广泛使用已经促使GIS有更加开阔的前景和发挥更加重要的作用 除了GIS桌面产品,GIS软件可以被集中在应用服务器上和Web服务器上,把GIS的功能通过网络传递给任意多的用户;可以集中一些GIS逻辑,将其嵌入和部署在用户定制的应用中;为野外GIS业务在移动设备上部署GIS软件的应用也多了起来。 企业GIS用户使用传统高级的GIS桌面软件,使用Web浏览器,专门的应用程序移动计算设备以及其它数字化设备连接中心GIS服务器。GIS平台涉及的范围在不断的扩展。 ArcGIS产品线为用户提供一个可伸缩的,全面的GIS平台。 使用 ArcGIS 满足 GIS 用户所有的需求 ArcGIS作为一个可伸缩的平台,无论是在桌面,在服务器,在野外还是通过Web,为个人用户也为群体用户提供GIS的功能。ArcGIS 9是一个建设完整GIS的软件集合,它包含了一系列部署GIS的框架: ArcGIS Desktop――一个专业GIS应用的完整套件 ArcGIS Engine――为定制开发GIS应用的嵌入式开发组件 服务端GIS――ArcSDE?,ArcIMS?和ArcGIS Server 移动GIS――ArcPad?以及为平板电脑使用的ArcGIS Desktop和Engine ArcGIS是基于一套由共享GIS组件组成的通用组件库实现的,这些组件被称为ArcObjectsTM。 ArcObjects包含了大量的可编程组件,从细粒度的对象(例如,单个的几何对象)到粗粒度的对象(例如与现有ArcMap文档交互的地图对象)涉及面极广,这些对象为开发者集成了全面的GIS功能。每一个使用ArcObjects建成的ArcGIS产品都为开发者提供了一个应用开发的容器,包括桌面GIS(ArcGIS Desktop),嵌入式GIS(ArcGIS Engine)以及服务端GIS(ArcGIS Server)。关于ArcObjects开发的更详细的信息可以在http://arcgisdeveloperonline.esri.com中找到。 桌面 GIS 对于那些利用GIS信息进行编辑,设计的GIS专业人士来说,桌面GIS占有主导地位。GIS专业人士使用标准桌面作为工具来设计,共享,管理和发布地理信息。 ArcGIS Desktop是一个集成了众多高级GIS应用的软件套件,它包含了一套带有用户界面组件的Windows桌面应用(例如,ArcMap,ArcCatalogTM,ArcTooboxTM以及ArcGlobe)。ArcGIS Desktop具有三种功能级别――ArcView?,ArcEditorTM和ArcInfoTM,都可以使用各自软件包中包含的ArcGIS Desktop开发包进行客户化和扩展。 关于ArcGIS Desktop的更多的信息请参考第四章“桌面GIS:ArcView,ArcEditor,ArcInfo”。 上面的图形展示了使用 ArcGIS Desktop 的应用实例 服务端 GIS GIS用户通过部署一个集中式的GIS服务器在大型组织之内以及Internet的用户之间发布和共享地理信息。服务端的GIS软件适用于任何集中执行GIS计算,并计划扩展支持GIS数据管理和空间处理的场合。除了为客户端提供地图和数据服务,GIS服务器还在一个共享的中心服务器上支持GIS工作站的所有功能,包括制图,空间分析,复杂空间查询,高级数据编辑,分布式数据管理,批量空间处理,空间几何完整性规则的实施等等。 ArcGIS服务器产品符合信息技术的标准规范,可以和其它企业级的软件完美的合作,例如Web服务器,数据库管理系统(DBMS)以及企业级的应用开发框架包括.NET和JAVA2企业级平台(J2EE)。这促使了GIS和其它大量的信息系统技术的整合。 ArcGIS 9所包含的三种服务端产品: ArcSDE――一个在多种关系型数据库管理系统中管理地理信息的高级空间数据服务器。ArcSDE是一个位于ArcGIS其它软件产品和关系型数据库之间的数据服务器,其广泛的应用使得在跨任何网络的多个用户群体中共享空间数据库以及在任意大小的数据级别中伸缩成为可能。 ArcIMS――是一个可伸缩的,通过开放的Internet协议进行GIS地图,数据和元数据发布的地图服务器。ArcIMS已经在成千上万的应用中部署了,主要是为Web上的用户提供数据分发服务和地图服务。 ArcGIS Server――是一个应用服务器,包含了一套在企业和Web框架上建设服务端GIS应用的共享GIS软件对象库。ArcGIS Server是一个新产品,用于构建集中式的企业GIS应用,基于SOAP的Web services和Web应用。 要了解关于ArcGIS 9服务器产品的更多信息,请参考第五章,“服务端GIS:ArcSDE,ArcIMS和ArcGIS Server”。 GIS 将会利用 Internet 不断成长,并取得进一步的成功。 Internet 技术的 不断发展,如 Web services ,为 GIS 用户共享,地理信息的服务以及跨组织 的 GIS 互联提供了坚实的保障。 嵌入式 GIS 用户可以使用嵌入式的GIS,在所关注的应用中增加所选择的GIS组件,从而为组织的任何部门提供GIS的功能,这使得许多需要在日常工作中应用GIS作为一种工具的用户,可以通过简单的,集中于某些方面的界面来获取GIS的功能。例如,嵌入式的GIS应用帮助用户支持远程数据采集的工作,管理者的桌面上实现GIS,为系统操作人员实现定制界面,以及面向数据编辑的应用等。 ArcGIS Engine提供了一套应用于ArcGIS Desktop应用框架之外(例如制图对象作为ArcGIS Engine的一部分,而不是ArcMap的一部分)的嵌入式ArcGIS组件。使用ArcGIS Engine,开发者在C++,COM,.NET和Java环境中使用简单的接口获取任意GIS功能的组合来构建专门的GIS应用解决方案。 开发者通过ArcGIS Engine构建完整的客户化应用或者在现存的应用中(例如微软的Word或者Excel)嵌入GIS逻辑来部署定制的GIS应用,为多个用户分发面向GIS的解决方案。 使用 ArcGIS Engine 将 GIS 嵌入到你的应用中 移动GIS 依靠移动计算设备上的专业应用系统,GIS越来越多的从办公室中转移到野外。目前拥有GPS功能的无线移动设备被常常使用于野外专题数据获取和野外信息获取。消防员,垃圾收集员,工程检修员,测量员,公用设施施工工人,士兵,统计调查员,警察以及野外生物学家是使用移动GIS这个工具的一些野外工作者的代表。 一些野外工作任务需要相对简单的GIS工具,但也有些工作涉及到需要高级GIS工具的复杂操作。ArcGIS包含了能够满足两方面需求的应用。ArcPad是ArcGIS实现移动GIS和野外计算(如需要记录和登记突发性事故的空间信息)的解决方案,这些类型的工作可以在手持计算机设备(运行Microsoft Windows? CE或者Pocket PC)或者平板电脑上完成。ArcGIS Desktop和ArcGIS Engine集中于需要GIS分析和决策分析的野外工作任务,这种典型的任务往往在高端平板电脑上执行。 要更多的了解移动GIS的信息,请参考第七章“移动GIS:ArcPad及设备”。 你可以在野外实现 GIS 空间数据库( Geodatabase ) 作为geographic database的简写,geodatabase是在专题图层和空间表达中组织GIS数据的核心地理信息模型。 Geodatabase是一套获取和管理GIS数据的全面的应用逻辑和工具。无论是客户端的应用(如ArcGIS Desktop),服务器配置(如ArcGIS Server),还是嵌入式的定制开发(ArcGIS Engine)都可以获取geodatabase的应用逻辑。 Geodatabase是一个基于GIS和DBMS标准的物理数据存储库,可以应用于多用户访问,个人DBMS以及XML。 Geodatabase原本被设计成一个开放的,简单几何图形的存储模型。Geodatabase对众多的存储机制开放,包括DBMS存储,文件型存储或者XML方法存储,并不局限于某个DBMS的供应商。2023-07-09 14:22:505
Web电子地图的实现原理请教
这种东西有必要自己完全去写吗?如果只是一个地图应用,你可以考虑使用第三方的插件,例如:MapX,它是MapInfo公司的地图插件,功能非常强大。 ----------------------------------------------------------------------自己实现,你自己用用google或者baidu的地图,分析一下它它们ajax请求,就能学到基本流程。同时,我觉得做出来,和做出来一个产品级的东西是2个概念。如果只是玩玩,那可以随便实现一下。另外你可以去大学文献检索里面,找个叫:一种基于A J A X的电子地图平滑移动算法的实现的文章,它是讲一种平移算法的,还挺简单的,可以学习一下。2023-07-09 14:23:051