(一)项目介绍
网址:https://www.doczj.com/doc/2319182802.html,/
OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript包,目前的最高版本是2.5 V,通过BSD License 发行。它实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范,OpenLayers采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。
采用OpenLayers作为客户端不存在浏览器依赖性。由于OpenLayers采用JavaScript语言实现,而应用于Web浏览器中的DOM(文档对象模型)由JavaScript实现,同时,Web 浏览器(比如IE,FF等)都支持DOM 。
OpenLayers APIs采用动态类型脚本语言JavaScript编写,实现了类似与Ajax功能的无刷新更新页面,能够带给用户丰富的桌面体验(它本身就有一个Ajax类,用于实现Ajax功能)。
目前,OpenLayers所能够支持的Format有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在OPenlayers.Format名称空间下的各个类里,实现了具体读/写这些Format的解析器。
OpenLayers所能够利用的地图数据资源“丰富多彩”,在这方面提供给拥护较多的选择,比如WMS、WFS、GoogleMap、KaMap、MSVirtualEarth、WorldWind等等。当然,也可以用简单的图片作为源。
第一次使用OpenLayers:
先到它的官方网站https://www.doczj.com/doc/2319182802.html,下载他的压缩包,解压后可以看到其中的一些目录和文件,拷贝目录下的OpenLayer.js、根目录下的lib目录、根目录下的img目录到你网站的Scripts目录下(当然,这个只是例子,您网站的目录结构您自己说得算,只要
保证OpenLayers.js,/lib,/img在同一目录中即可)。然后,创建一个index.html作为查看地图的页面,导入OpenLayers.js和你将要创建的js。
我们以加载WMS和GML文件为例。
var lon = 5; //x-axis coodinate in map units
var lat = 40; //y-axis coordinate in map units
var zoom = 5; //number of zoom levels
var map, layer; //声明变量map、layer;等同于var map = null; var layer = null;
map = new OpenLayers.Map('map');
//实例化一个地图类OpenLayers.Map
layer = new https://www.doczj.com/doc/2319182802.html,yer.WMS( "OpenLayers WMS",
"https://www.doczj.com/doc/2319182802.html,/wms/vmap0", {layers: 'basic'} );
//以WMS的格式实例化图层类https://www.doczj.com/doc/2319182802.html,yer
map.addLayer(layer);
map.zoomToExtent(newOpenLayers.Bounds(-3.922119,44.335327,
4.866943,49.553833));
//在Map对象上加载Layer对象,并用map.zoomToExtent函数使地图合适地显示
map.addLayer(new https://www.doczj.com/doc/2319182802.html,yer.GML("GML", "gml/polygon.xml"));
//再在刚加载的WMS文件上,加载一GML文件
剩下的工作就是,加上一些控件OpenLayers.Control之类的东西,比如LayerSwitcher 等。它们会在地图浏览的“窗口”上增加一些工具栏或是“按钮”,增加互动性和功能性。
当然,Openlayers中的东西远不止这些,至于它的框架分析、APIs实现机制,会在后续文章中说出。写这个的过程,也是一个学习的过程,其中难免有不妥之处,热烈欢迎大家批评指正,相互交流。
OpenLayers 项目完整分析——(二)源代码总体结构分析
(二)源代码总体结构分析
通过前面的项目介绍,我们大概已经知道Openlayers是什么,能够做什么,有什么意义。接下来我们分析它怎么样,以及怎样实现的等问题。
这个图是从它的文档上截取的,旨在从感官上认识一下OpenLayers的类。下面分别介绍(文档中的类是按字母顺序排列的,也按这个顺序说吧):
我们看到在类的顶层“高高在上”的是OpenLayers,它为整个项目实现提供名称空间(JavaScript语言没有名称空间一说,但是它确实有自己的机制实现类似的功能,后面会说明),它直接拥有一常量VERSION_NUMBER,以标识版本。
Ajax:顾名思义,用于实现Ajax功能,只是OpenLayers的开发者们把它单独写到一个类里了,其中用到了Prototype.js框架里的一些东西。同时,设计的时候也考虑了跨浏览器的问题。
BaseTypes:这里定制了OpenLayers中用到的string,number 和function。比如,OpenLayers. String. startsWith,用于测试一个字符串是否一以另一个字符串开头;OpenLayers. Number. limitSigDigs,用于限制整数的有效数位;OpenLayers. Function.bind,用于把某一函数绑定于对象等等。
Console:OpenLayers.Console,此名称空间用于调试和把错误等输出到“控制台”上,需要结合使用../Firebug/firebug.js。
Control:我们通常所说的控件类,它提供各种各样的控件,比如上节中说的图层开关LayerSwitcher,编辑工具条EditingToolbar等等。加载控件的例子:
class = new OpenLayers.Map('map', { controls: [] });
map.addControl(new OpenLayers.Control.PanZoomBar());
map.addControl(new OpenLayers.Control.MouseToolbar());
Events:用于实现OpenLayers的事件机制。具体来说,OpenLayers中的事件分为两种,一种是浏览器事件,例如mouseup,mousedown之类的;另外一种是自定义的,如addLayer 之类的。OpenLayers中的事件机制是非常值得我们学习的,后面将具体讨论。
Feature:我们知道:Feature是geography 和attributes的集合。在OpenLayers中,特别地OpenLayers.Feature 类由一个marker 和一个lonla组成。OpenLayers. Feature.WFS与OpenLayers. Feature. Vector继承于它。
Format:此类用于读/写各种格式的数据,它的子类都分别创建了各个格式的解析器。这些格式有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。
Geometry:怎么翻译呢,几何?是对地理对象的描述。它的子类有Collection、Curve、
LinearRing、LineString、MultiLineString、MultiPoint、MultiPolygon、Point、Polygon、Rectangle、Surface,正是这些类的实例,构成了我们看到的地图。需要说明的是,Surface 类暂时还没有实现。
Handler:这个类用于处理序列事件,可被激活和取消。同时,它也有命名类似于浏览器事件的方法。当一个handler 被激活,处理事件的方法就会被注册到浏览器监听器listener ,以响应相应的事件;当一个handler被取消,这些方法在事件监听器中也会相应的被取消注册。Handler通过控件control被创建,而control通过icon表现。
Icon:在计算机屏幕上以图标的形式呈现,有url、尺寸size和位置position3个属性。一般情况,它与OpenLayers.Marker结合应用,表现为一个Marker。
Layer:图层。
Map:网页中动态地图。它就像容器,可向里面添加图层Layer和控件Control。实际上,单个Map是毫无意义的,正是Layer和Control成就了它。
Marker:它的实例是OpenLayers.LonLat 和OpenLayers.Icon的集合。通俗一点儿说,Icon 附上一定的经纬度就是Marker。
Popup:地图上一个小巧的层,实现地图“开关”功能。使用例子:
Class = new OpenLayers.Popup("chicken",
new OpenLayers.LonLat(5,40),
new OpenLayers.Size(200,200),
"example popup",
true);
map.addPopup(popup);
Renderer:渲染类。在OpenLayers中,渲染功能是作为矢量图层的一个属性存在的,我们称之为渲染器,矢量图层就是通过这个渲染器提供的方法将矢量数据显示出来。以SVG 和VML为例,继承关系是这样的:
至于OpenLayers. Renderer. Elements为什么要存在,以及它的渲染机制,后面会说。
Tile:设计这个类用于指明单个“瓦片”Tile,或者更小的分辨率。Tiles存储它们自身的信息,比如url和size等。它的类继承关系如下:
Util:“跑龙套”的类。
写到这里,可以看到OpenLayers 的类缠绕的挺麻烦的,接下来的文章将从代码部分分析更细部的东西。
OpenLayers 项目分析——(三)BaseTypes
(三)BaseTypes :定义底层类与定制JS内置类
先说基类型BaseTypes下,OpenLyers构建的“自己”的类。它们分别是:OpenLayers. LonLat、OpenLayers. Pixel、OpenLayers.Size、OpenLayers. Element、OpenLayers. Bounds和OpenLayers. Class。下面分别介绍:
OpenLayers. LonLat:经纬度类,其实例为地图提供一经度、纬度对,即位置。有两个属性lon(x-axis coodinate )和lat(y-axis coordinate )。这里说明一下,怎么经纬度又与x 轴坐标、y轴坐标纠缠在一起?是这样:当地图是在地理坐标投影下,它就是经纬度;不然就是地图上的x/y轴坐标。除构造函数外,实现了五个函数:
toShortString:function()把坐标转换为字符串;
clone:function()复制一个LonLat对象;
Add:function(lon,lat)改变现有地图的位置;
return new OpenLayers.LonLat(this.lon + lon, https://www.doczj.com/doc/2319182802.html,t + lat);
equals:function(ll)判断传入的lon,lat对是否与当前的相等;
wrapDateLine:function(maxExtent)复制下(lon,lat),指定为边界的最大范围。
OpenLayers. Pixel:像素类,在显示器上以(x,y)坐标的的形式呈现像素位置。有两个属性x坐标、y坐标,提供四个成员函数:
clone:function() 拷贝像素;
equals:function(px) 判断两像素是否相等;
add:function(x,y) 改变(x,y)使其成为新像素;
return new OpenLayers.Pixel(this.x + x, this.y + y);
offset:function(px)调用add()使像素位置发生偏移。
newPx = this.add(px.x, px.y);
OpenLayers.Size:也有两个属性,宽度width、高度height。实现了两个成员函数:
clone:function()和equals:function(sz)不多说了。
OpenLayers. Element:在这个名称空间下,开发者写了好多API,有visible、toggle、hide、show、remove、getHeight、getDimensions和getStyle,以实现元素的显示、隐藏、删除、取得高度,取得范围等功能。以getHeight函数为例我们看看它的代码:
/**
* APIFunction: getHeight
*
* Parameters:
* element - {DOMElement}
*
* Returns:
* {Integer} The offset height of the element passed in
*/
getHeight: function(element) {
element = OpenLayers.Util.getElement(element);
return element.offsetHeight;
}
这里涉及到文档对象模型DOM的一些东西,函数本身很简单,最后返回元素的高度。
OpenLayers. Bounds:在这个类中,数据以四个浮点型数left, bottom, right, top 的格式存储,它是一个像盒子一样的范围。它实现了三个描述一个Bound的函数:toString、toArray 和toBBOX。其中,toString的代码如下:
/**
* APIMethod: toString
*
* Returns:
* {String} String representation of bounds object.
* (ex."left-bottom=(5,42) right-top=(10,45)")
*/
toString:function() {
return ( "left-bottom=(" + this.left + "," + this.bottom + ")"
+ " right-top=(" + this.right + "," + this.top + ")" );
}
结果类似于"left-bottom=(5,42) right-top=(10,45)"
三个Bound数据来源函数:fromString、fromArray和fromSize;
五个获取对象属性的函数:getWidth、getHeight、getSize、getCenterPixel、getCenterLonLat;
余下还有:add:function(x,y),extend:function(object),containsLonLat,containsPixel,contains,intersectsBounds,containsBounds,determineQuadrant,wrapDateLine。以函数extend为例,看看源码。
extend:function(object) {
var bounds = null;
if (object) {
switch(object.CLASS_NAME) {
case "OpenLayers.LonLat":
bounds = new OpenLayers.Bounds (object.lon, https://www.doczj.com/doc/2319182802.html,t, object.lon, https://www.doczj.com/doc/2319182802.html,t);
break;
case "OpenLayers.Geometry.Point":
bounds = new OpenLayers.Bounds(object.x, object.y,object.x, object.y);
break;
case "OpenLayers.Bounds":
bounds = object;
break;
}
if (bounds) {
if ( (this.left == null) || (bounds.left < this.left)) {
this.left = bounds.left;}
if ( (this.bottom == null) || (bounds.bottom < this.bottom) ) {
this.bottom = bounds.bottom;}
if ( (this.right == null) || (bounds.right > this.right) ) {
this.right = bounds.right;}
if ( (this.top == null) || (bounds.top > this.top) ) {
this.top = bounds.top;}
}
}
}
可以看出,对Bounds的扩展可以有三种形式:point, lonlat, 或者bounds,计算的条件是零坐标是在屏幕的左上角。
OpenLayers. Class:这个类是OpenLayers 中的“大红人”,只要创建其他类就得用它,同时也实现了多重继承。用法如下:
单继承创建:class = OpenLayers.Class(prototype);
多继承创建:class = OpenLayers.Class(Class1, Class2, prototype);
净说底层类了,对js内置类的扩展下回写。
OpenLayers 项目分析——(三)BaseTypes (续)
(三)BaseTypes:OpenLayers中定制JavaScript内置类
OpenLayers不仅“自己”写了一些底层的类,像上回说的那些都是。同时也定制了一些JS的一些内置类,即对JS内置类的扩展。这个扩展主要包含3类:String,Number,Function,存在于BaseTypes.js文件中。
String:OpenLayers对string类型定制了8个方法,分别是startsWith、contains、trim和camelize;还有另外4个方法:String. startsWith、String. contains、String.trim和String. Camelize,它们将会在3.0Version中被删除,可能是以前版本遗留下来的,这里就不说它们了。
//Test whether a string starts with another string.
startsWith: function(str, sub) {
return (str.indexOf(sub) == 0);
}
//Test whether a string contains another string.
contains: function(str, sub) {
return (str.indexOf(sub) != -1);
}
//Removes leading and trailing whitespace characters from a string.
trim: function(str) {
return str.replace(/^"s*(.*?)"s*$/, "$1");
}
//Camel-case a hyphenated string.
//Ex."chicken-head"becomes"chickenHead",
//and"-chicken-head"becomes"ChickenHead".
// “骆驼”化带有连字符的字符串。
camelize: function(str) {
var oStringList = str.split('-');
var camelizedString = oStringList[0];
for (var i = 1; i < oStringList.length; i++) {
var s = oStringList[i];
camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
}
return camelizedString;
}
Number:
项目仅对number类型扩展了一个方法OpenLayers. Number. limitSigDigs(还有一个方法Number. limitSigDigs,同样在3.0中会删除)。
//Limit the number of significant digits on an integer.
limitSigDigs: function(num, sig) {
var fig;
if(sig > 0) {
fig = parseFloat(num.toPrecision(sig));
} else {
fig = 0;
}
return fig;
}
Function:
扩展了两个方法bind 和bindAsEventListener(同样存在Function.bind和Function. bindAsEventListener两个被“遗弃”的函数)。
//Bind a function to an object.
//Method to easily create closures with'this' altered.
bind: function(func, object) {
// create a reference to all arguments past the second one
var args = Array.prototype.slice.apply(arguments, [2]);
return function() {
// Push on any additional arguments from the actual function call.
// These will come after those sent to the bind call.
var newArgs = args.concat(
Array.prototype.slice.apply(arguments, [0])
);
return func.apply(object, newArgs);
}
}
//Bind a function to an object, and configure it to receive the event
//object as first parameter when called.
bindAsEventListener: function(func, object) {
return function(event) {
return func.call(object, event || window.event);
};
}
这里说说这两个方法。
首先看看bind方法,这是一个能够被Function的实例得到的方法,如下所示:Function.prototype.bind = function() {
var _method = this, args = [], object = arguments[0];
for (var i = 1; i < arguments.length; i++)
args.push(arguments[i]);
return function(moreargs) {
for (var i = 0; i < arguments.length; i++)
args.push(arguments[i]);
return _method.apply(object, args);
}
};
_method 代表Function实例自身,bind可接收多个参数,不过它绑定是是第一个参数,该参数是一个function或者是调用环境,后面的都是执行函数的参数。
Function.prototype.bindAsEventListener = function(object) {
var _method = this;
return function(event) {
return _method.call(object, event || window.event);
}
};
这里只是将object作为_method 引用的环境,就是说现在可以在object对象中这样使用, object. _method (event||window.event)。
也许你注意到了Funtion扩展的两个方法一个用到了call而另一个用的是apply,其实这两个并没有什么太大的区别,只是参数传递的形式不同,如若没有参数要传递,那么这两个是一样的:
apply(obj[,argumentsArray]),call(obj[,arg1[,arg2…]])。
OpenLayers项目分析——(四)空间数据的组织与实现
提到数据,先思考几个问题:
GIS,核心是什么?数据?平台?服务?
空间数据的特征、表达方式?
地理数据的模型(结构)?
在OpenLayers空间数据的实现主要存在OpenLayers. Geometry类及其子类中。我们先看下面的两个图片,表现了这些类的继承关系。从图上可以清楚的看出MultiPoint、Polygon 和MultiLineString 这三个类实现了多重继承,即直接继承于Geometry类,又继承于Collection类(为什么要这样实现?)。
OpenLyers对于Geometry对象的组织是这样的,其实最基础的就是点,然后MultiPoint 由点构成,继承自Openlayers.Geometry.Collection,而LinearRing,LineString均由Point构成,
Polygon由OpenLayers.Geometry.LinearRing构成。OpenLyers在解析数据时候,将所有的面、线包含的点全部都对象化为Openlayers.Geometry.Point。有人测试这里面存在问题:解析矢量数据慢,甚至在点数多的情况下,会使浏览器“崩溃”掉。想想是有道理的:OpenLyers 在解析数据时候,将所有的面、线包含的点全部都对象化为点对象t,并首先将所有的对象读取到内存,得到一个Feature的集合,然后将这个集合提交给渲染器进行渲染。这样渲染起来当然慢了。至于为什么要这样,可能是OpenLayers项目本身在标准上,在框架结构上做的比较好,更细部的东西还得优化呀。可话又说回来,OpenLayers作为一个优秀的开源JS框架,学习借鉴的意义要比应用的意义大吧。
下面以Point和Collection为例来说明其内部实现过程,先看Point。
我们知道一个点就是一个坐标对(x,y)嘛,当然它得有两个属性x,y。在point类里,提供了六个成员函数,分别是clone、distanceTo、equals、move、rotate和resize。看看计算两点距离的函数是怎么写的:
distanceTo: function(point) {
var distance = 0.0;
if ( (this.x != null) && (this.y != null) &&
(point != null) && (point.x != null) && (point.y != null) ) {
var dx2 = Math.pow(this.x - point.x, 2);
var dy2 = Math.pow(this.y - point.y, 2);
distance = Math.sqrt( dx2 + dy2 );
}
return distance;
}
在collection集合对象中,可以存放同一类型的地理对象,也可以放不同的地理对象。定义了一个属性component ,以数组对象的形式存储组成collection对象的“组件”。别的不说了,看一个获取集合大小的函数getLength:
getLength: function() {
var length = 0.0;
for (var i = 0; i < https://www.doczj.com/doc/2319182802.html,ponents.length; i++) {
length += https://www.doczj.com/doc/2319182802.html,ponents[i].getLength();
}
return length;
}
细心的朋友也许会发现,每一个基类都有一个destroy函数。它是OpenLayers实现的垃圾回收机制,以防止内存泄露,优化性能:
/* APIMethod: destroy
* Destroy this geometry.
*/
destroy: function () {
https://www.doczj.com/doc/2319182802.html,ponents.length = 0;
https://www.doczj.com/doc/2319182802.html,ponents = null;
}。
OpenLayers项目分析——(五)数据解析——以GML为例
(五)OpenLayers 数据解析—以GML为例
前面也提到过,OpenLayers设计是符合标准的,有良好的框架结构和实现机制,非常值得学习。OpenLayers支持的格式比较多,有XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS等。这回主要以GML为例来看OpenLayers 数据的解析过程。
先来了解一下GML:
GML (Geography Markup Language)即地理标识语言,它由OGC(开放式地理信息系统协会)于1999年提出,目前版本是3.0。GML是XML在地理空间信息领域的应用。利用GML可以存储和发布各种特征的地理信息,并控制地理信息在Web浏览器中的显示。地理空间互联网络作为全球信息基础架构的一部分,已成为Internet上技术追踪的热点。许多公司和相关研究机构通过Web将众多的地理信息源集成在一起,向用户提供各种层次的应用服务,同时支持本地数据的开发和管理。GML可以在地理空间Web领域完成了同样的任务。GML技术的出现是地理空间数据管理方法的一次飞跃。
介绍一篇文章:GML3.0的WebGlS研究。
我们从总体上来把握一下OpenLayers对于GML数据的解析,首先通过调用得到GML 文本数据,然后通过Formate.GML类的read方法来解析这个文本,解析得到Geometry对象,然后Geometry对象用相应的渲染器画出来。其实解析得到还是那些基本的Point呀、LineString呀之类的Geometry对象,就是我们在地图上看到的那些内容。
下面看其实现过程:
//read()函数读取数据,获取特征列表
read: function(data) {
if(typeof data == "string") {
data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
}
var featureNodes = this.getElementsByTagNameNS (data.documentElement,this.gmlns, this.featureName);
var features = [];
for(var i=0; i var feature = this.parseFeature(featureNodes[i]); if(feature) { features.push(feature); } } return features; } 第1章概述与安装 1.1 概述 MAPGIS 是中国地质大学(武汉)开发的、通用的工具型地理信息系统软件。它是在享有盛誉的地图编辑出版系统MAPCAD 基础上发展起来的,可对空间数据进行采集,存储,检索,分析和图形表示的计算机系统。MAPGIS 包括了MAPCAD的全部基本制图功能,可以制作具有出版精度的十分复杂的地形图、地质图,同时它能对图形数据与各种专业数据进行一体化管理和空间分析查询,从而为多源地学信息的综合分析提供了一个理想的平台。 MAPGIS 地理信息系统适用于地质、矿产、地理、测绘、水利、石油、煤炭、铁道、交通、城建、规划及土地管理专业,在该系统的基础上目前已完成了城市综合管网系统、地籍管理系统、土地利用数据库管理系统、供水管网系统、煤气管道系统、城市规划系统、电力配网系统、通信管网及自动配线系统、环保与监测系统、警用电子地图系统、作战指挥系统、GPS 导航监控系统、旅游系统等一系列应用系统的开发。 1.2安装 1)系统要求: 硬件:CPU 486 以上、16M RAM、200M 硬盘、256 色以上显示器; 操作系统:Win9x、Win2000、WinNT 、WinXP或Win7系统; 输入设备:本单位主要使用的是GRAPHTEC—RS200Pro型扫描仪; 输出设备:本单位主要使用的是Canon—IPF700型出图打印机。 2) 硬件的安装: MAPGIS 硬件部分有加密狗,ISA 卡、PCI 卡三种,本单位主要为MAPGIS USB 软件狗,在确保机器BIOS 设置中USB 设备未被禁止的条件下,Windows 98 和Windows2000 自带的标准USB 驱动程序均可支持MAPGIS USB 软件狗工作。 3)软件的安装: MAPGIS 安装程序的安装过程为:找到MAPGIS 系统安装软件,双击SETUP 图标,系统自动安装软件,在WIN2000/NT/XP 下安装时,应先运行WINNT_DRV,提示成功后才可选择SETUP 开始MAPGIS 程序的安装; 对于MAPGIS6.1 及MAPGIS6.5,则无关键字和安装选择,但须根据实际需要选择安装组件。 从上述组件中选择实际运用中需要的选项,根据提示即可完成安装。 生成等值线图 在surfer中确定等值线图的色标 打开mapgis 在空间分析--DTM分析--Grd模型--离散数据网格化,打开原始数据,选择成 图数据行列,然后确定(生成网格化文件默认保存在原始数据所在文件位置)。 Grd模型--平面等值线图绘制,打开生成的网格化文件,在设置选项中画勾,制图幅面--选择“原始数据范围”点击--等值层值--删除当前分段,起始Z和终止Z输入在surfer中确定的色标分段和颜色,然后点击添加分段,然后同样操作输入第二个分段,(一个分段的终止和下一个分段的起始不能重合.比如分段0-288-934-1571-2086-2400,第一个分段为0-288,第二个分段可以设为288.1-934,第三个分段为934.1-1571 ……),最后再点确定,然后要删除288.1 934.1 1571.1…这几层。然后确定。 生成图文件--另存数据于—保存点,线,区文件到事先新建的文件夹,然后关掉工作区。 打开mapgis—图形处理—输入编辑—新建工程—在左边工程文件区右键添加项目 打开生成的点,线,面文件.按照wp,wl,wt顺序排列在工作区,然后点击1:1或者刷新,然后成图. 1.生成图框 在上图中,将鼠标放在图的四个角读出四个角的坐标,确定x轴和y轴的最大值和最小值, 记下来. 重新打开mapgis—实用服务—投影变换—系列标准图框—鼠标生成矩形图框 轮廓参数—输入x,y的起始值,例如:x的值15690200—15693200,y的值5191750—5194300 为了好看(框比图大),在这里输入的起值要比x,y的最小值小,比最大值大.比如可以输入x:15690150—15693250,y:5191700—5194350 图廓内网线参数—为xy的最小值,间距dx,dy由图的xy方向的长度来定, 网线类型--绘制实线坐标线 坐标系—图形坐标 其他的可以不管. 点击确定 Mapgis制图方法步骤及常用功能 电脑制图基本步骤: 在做一幅图之前,先新建一个文件夹(用来保存与该图有关的所有文件),用图名给该文件夹命名,例:×××矿1号剖面,之后将扫描的图放入该文件夹中。 打开MAPGIS主菜单,进行系统设置,把工作目录设置为刚才新建的文件夹(×××矿1号剖面),其余三项在安装MAPGIS软件时设置好。 因为扫描文件为(*.tif)格式,在MAPGIS中使用不变,因此需要转换成MAPGIS可使用的文件格式(*msi),需要进行数据类型转换: MAPGIS主菜单→图象处理→图象分析(镶嵌配准)→ 文件→数据输入→转换数据类型:(*.tif)→添加文件(扫描的文件)→转换 图形处理→输入编辑→确定:新建工程(把做的这张图看作一个工程),在左区点右键→新建区、新建线、新建点→ 矢量化→装入光栅文件→描图 其它常用功能: 做平面图之前,生成标准图框: 自动生成图框: MAPGIS主菜单→实用服务→投影变换→ 系列标准图框→键盘生成矩形图框→ 矩形图框参数输入:坐标系:国家坐标系;带号:20/40;注记:公里值。边框参数:内间距10,外间距1,边框宽1。网线类型:绘制实线坐标线;比例尺:图的比例尺(例:5000);矩形分幅方法:任意公里矩形分幅。 图廓参数:横向起始公里值(去带号):例20556000→556.000,纵向起始公里值:例4820.000,横向结束公里值:,纵向结束公里值:, 图廓内网线参数:网起始值(根据起始公里值定):,网间隔(根据比例尺定):;(例横向起始值为556.020,比例尺为5000,网起始值应为:556.500,网间隔为0.5)图幅名称:××××,图框文件名:×××,线参数设置→点参数设置→确定 因为扫描图纸过程中会产生变形,为校正所产生的误差,需要用标准图框对扫描图转换后的(*.msi)格式的图纸进行图像校正,如下: 图像校对: MAPGIS主菜单→图象处理→图象分析→ 打开影像(*.msi文件)→ 镶嵌融合→打开参照文件→参照线文件→ 镶嵌融合→删除所有控制点→ 镶嵌融合→添加控制点(点原图(左侧)的某点,再点右侧图对应的点,之后连续三次空格,)→ 镶嵌融合→控制点浏览(添加足够数量的控制点)→校正预览→影像校正 为将野外用GPS实测的地质、物化探点(有大地坐标)一次性投影到所图纸上,需要做投影变换 投影变换: 几个MAPGIS 图形编辑技巧 Mapgis图形编辑技巧 造线或矢量化时常用功能键 F5键(放大屏幕):以当前光标为中心放大屏幕内容。 F6键(移动屏幕):以当前光标为中心移动屏幕。 F7键(缩小屏幕):以当前光标为中心缩小屏幕内容。 F8键(加点):用来控制在输入线或矢量跟踪过程中需要加点的操作。按一次F8键,就在当前光标处加一点。 F9键(退点):用来控制在造线或矢量跟踪过程中需要退点的操作,每按一次F9键,就退一点。 F11键(改向):用来控制在造线或矢量跟踪过程中改变跟踪方向的操作。按一次F11键,就转到矢量线的另一端进行跟踪。 F12键(抓线上点):在输入或矢量化一条线开始或结束时,可用F12功能键来捕捉需相连接的线头或线上点或靠近线。 Shift键(抓线上最近点):在输入或矢量化一条线开始或结束时,按住Shift键用鼠标来捕捉需相连接的线上最近点。 Ctrl键(封闭线):在输入或矢量化一条封闭线结束时,按住Ctrl键右击鼠标可使该线的首尾封闭。 如何进行符号库之间符号的拷贝? 第一步:进"系统设置",把系统库目录设置为源符号库所在的目录。 第二步:进入"输入编辑",选择"系统库"菜单下的拷贝符号库。 第三步:系统要求选择目的符号库。系统会弹出显示两个符号的对话框。 第四步:在对话框的左边,选择要拷贝的符号,在右边给这个符号选择一个合适的位置,最好将此符号放置目的符号库的尾部。然后,选择红色的箭头,这样就实现了符号库之间的拷贝。用插入、删除的操作来实现符号库的编辑。按确定按钮后,退出操作。 几个MAPGIS 图形编辑技巧 1、数字“0”的巧用 1.1做图时经常遇到铁路、公路、高速公路交织穿插在一起。按一般的制图原则,有上下关系之分,高速公路在最上层,可压盖其它线状地物,高级道路可压盖低级道路,道路又可以压盖河流。而作业者操作时往往容易忽视先后顺序,把应该是上层的内容绘到了下层,如果删除重绘,显然比较费工,在此介绍一种简单易行的操作方法: (1)单击“线编辑”菜单,点击“造平行线”命令。 (2)选择要移到上层的那条线,系统会提示你输入产生的平行线距离,你可设定为“0”,这时这条线自然移到了上层。 1.2为了美化图面,增加地图的艺术性,设置不同颜色花构边的标题和字,具体作法如下: (1) 先输入一个字,点“编辑”对话框中“汉字字体”一项,只要在选定的字体参数前加上“ - ”号,这个字就变成了空心字。 (2) 然后再点“编辑”对话框,在下拉菜单中,选择“复制点”,在“阵列复制”对话框中行或列数任选一项,参数设置为“2”,另一项为“0”,再按系统提示将x、y 方向的距离,设置为“0”,这时在同一位置就生成了两个同样的字。 (3) 点击“修改点参数”工具条,选中其中一个字,将“注释参数”对话框中“汉字字体”前的“ - ”号去掉,注释颜色可改为另一种颜色,再点“Yes”,一个带花边的字就造成了。 2、翻转图形 在Mapgis中的其它下面整图变换中比例参数的X比例中输入法-1或Y比例中输入-1后确定。 3、在电脑里做剖面图 1)、先把MAPGIS图生成JPG格式,在PHOTOSHOP中图像—图像大小—文挡大小中输入经过变化后的宽度和高度数字(根据剖面图的比例和JPG图的比例关系得出),然后按需要裁剪,以减少图形的所占内存; 2)、裁剪后旋转使剖面线处于水平位置; 3)、在MAPGIS中插入裁剪旋转后光栅文件,新建线和点文件,以剖面线为水平的X轴,画垂直X轴的线为Y轴,以剖面线起点的位置为坐标原点,以剖面线起点的高程为起始Y轴刻度,在X和Y轴上标上相对应比例尺的刻度。 利用MApGIS做剖面 1. 首先打开一张等值线图 2. 对等值线进行编辑结构属性,赋予它一个高程的属性 3.在矢量化中选中高程自动赋值,利用高程自动赋值赋予等值线属性 4. 所以等值线都赋值以后,保存线文件,打开空间分析中的DTM分析。 5.在DTM分析中,将等值线文件格网化,形成GRD文件。 6 .DTM打开后,将其他的附有地层的线或者区文件一并打开 7.在模型应用中选择“高程剖面分析”——“交互造线”。交互造线的方法很简单,左键选择,拉直线,右键确定,中间会弹出对话框 8.弹出对话框,进行一些无关紧要的选择,最后选择左下角的与弧求交,这个弧就是你附在GRD上的区文件,弧段就是地层的界线。 9.生成好的剖面图 如何用MAPGIS矢量等值线平面图生成彩色等值线立体图 1.1"输入编辑"系统中,给绘制的等值线平面图添加属性字段。 1、工作区/装入文件/装入线文件。 2、编辑/参数编辑/编辑线属性结构。 点击"编辑线属性结构"系统弹出下图,增加属性字段"gc"。 按回车,系统弹出下图。选择"双精度型"字段类型,OK。 给出字段长度、小数位数,回车。 3、矢量化/高程自动赋值。 用鼠标在等值线图上拉一直线赋高程值,根据已设置的"当前高程"为基值,自动逐条按"高程增量"递增赋值。 4、工作区/存文件 1.2 进入"DTM分析"系统,生成彩色等值立体图。 1、文件/打开数据文件/线数据文件。 2、处理点线/线数据高程点提取。 点击"线数据高程点提取"系统弹出对话框: 从装入的线文件"线属性高程域"中选取高程值。设置提点方式及提点参数,确定。即可从原图的某一属性字段提取高程数据点。 3、Grd模型/离散数据网格化。 选择"离散数据网格化"菜单,系统弹出如下对话框。 用Mapgis程序绘制物化探等值线图及点位数据图方法说明 赵明亮(李金忠整理) 一、建立数据表 1、用电子表格建立成图元素表(不要表头,建议将平面坐标按Y、X、数据…列次序移到表前1、2…列,Y、X坐标分别为7位、6位整数); 2、另存为文本文件(制表符分隔)类型的新文件并取名(如文件名为茨竹箐原始数据表)。 二、Mapgiss投影转换 1、打开Mapgiss程序主菜单→点击″实用服务″→点击″投影变换″→点击″P投影转换″→点击″U 用户文件投影转换″→打开文本文件(茨竹箐原始数据表); 2、选″指定分隔符″→指定坐标X、Y列(注意X、Y列可能倒置); 3、点击″设置分隔符″→选″Tab″及″空格″→点击″数据类型″→将所有的字符串点为″双精度″→在″属性名称所在行″选框中选择数据(注意数据不能选″无″)→在″加入″列选定所需的坐标及元素值→确定; 4、点击″点图元参数″→选择子图参数(建议选编号35的圆点的子图号,高度宽度一般均为1,颜色为1)→确定; 5、选″不需要投影″→点击″数据生成″→确定→关闭; 6、另取点文件名(如茨竹箐数据投影)→保存→退出。 三、等值线图的Mapgiss的DTM分析 1、打开Mapgiss程序主菜单→点击″空间分析″→点击″DTM分析″→点击″文件″→点击″打开数据文件″→点击″点数据文件″→打开点文件(如茨竹箐数据投影); 2、点击″处理点线(P)″→点击″点数据高程提取″→在″高程属性项″中点击要成图的元素的值→确定; 3、点击″Tin模型″→点击″快速生成三角剖分网″→在是否保存选项中选择″否″; 4、点击″Tin模型″→点击″删除三角剖分网边″→手工删除不合理的剖分网边; 5、点击″Tin模型″→点击″追踪剖分等值线″; ①选″等值线套区″→选″绘制色阶″→可选或不选″保留边界″→选″等值线光滑处理″→在″光滑度″选项中选择″高程度″; ②点击″等值层值″→对等值线层分段参数中的″起始Z″、″终止Z″、″步长增″及″起始色″、″终止色″进行设置→点击″更新当前分段″→确定; MapGIS文件格式详解 1、概述 1.1 文件组成 MAPGIS数据文件主要包括工程文件文件和工程内各工作区的文件。工作区是MAPGIS提出的一个概念,简单地说,工作区就是一个数据池,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个MAPGIS数据文件。数据文件主要有以下几种: 点工作区(.MPJ文件):工程文件,存放工程中所有的工作区文件 点工作区(.WT文件):点(PNT) 线工作区(.WL文件):线(LIN)、结点(NOD) 区工作区(.WP文件):线(LIN)、结点(NOD)、区(REG) 网工作区(.WN文件:线(LIN)、结点(NOD)、网(NET) 表工作区(.WB文件):无空间实体,仅有表格记录 1.2 数据类型 点元:点元是点图元的简称,有时也简称点,所谓点元是指由一个控制点决定其位置的有确定形状的图形单元。它包括字、字符串、文本、子图、圆、弧、直线段等几种类型。它与“线上加点”中的点概念不同。 弧段:弧段是一系列有规则的,顺序的点的集合,用它们可以构成区域的轮廓线。它与曲线是两个不同的概念,前者属于面元,后者属于线元。 区/区域:区/区域是由同一方向或首尾相连的弧段组成的封闭图形。 结点:结点是某弧段的端点,或者是数条弧段间的交叉点。 属性:就是一个实体的特征,属性数据是描述真实实体特征的数据集。显示地物属性的表通常称为属性表,属性表常用来组织属性数据。 2、工程文件 2.1基本构成 工程文件数据由头信息+各工作区信息数据构成,其中头信息是0-1112字节,各工作区信息是400各字节,按顺序首尾存放在文件中。 2.2头信息 头信息存储位置为0-1112字节,主要存储包含的工作区文件数、图形范围、比例、位移等信息。 用Mapgiss程序绘制物化探 等值线图及点位数据图方法说明 一、建立数据表 1、用电子表格建立成图元素表(不要表头,建议将平面坐标按Y、 X、数据…列次序移到表前1、2…列,Y、X坐标分别为7位、6位整数); 2、另存为文本文件(制表符分隔)类型的新文件并取名(如文件名 为茨竹箐原始数据表)。 二、Mapgiss投影转换 1、打开Mapgiss程序主菜单→点击″实用服务″→点击″投影变 换″→点击″P投影转换″→点击″U用户文件投影转换″→打开文本文件(茨竹箐原始数据表); 2、选″指定分隔符″→指定坐标X、Y列(注意X、Y列可能倒 置); 3、点击″设置分隔符″→选″Tab″及″空格″→点击″数据类 型″→将所有的字符串点为″双精度″→在″属性名称所在行″选框中选择数据(注意数据不能选″无″)→在″加入″列选定所需 的坐标及元素值→确定; 4、点击″点图元参数″→选择子图参数(建议选编号35的圆点的子图号,高度宽度一般均为1,颜色为1)→确定; 5、选″不需要投影″→点击″数据生成″→确定→关闭; 6、另取点文件名(如茨竹箐数据投影)→保存→退出。 三、等值线图的Mapgiss的DTM分析 1、打开Mapgiss程序主菜单→点击″空间分析″→点击″DTM分析″→点击″文件″→点击″打开数据文件″→点击″点数据文件″→打开点文件(如茨竹箐数据投影); 2、点击″处理点线(P)″→点击″点数据高程提取″→在″高程属性项″中点击要成图的元素的值→确定; 3、点击″Tin模型″→点击″快速生成三角剖分网″→在是否保存选项中选择″否″; 4、点击″Tin模型″→点击″删除三角剖分网边″→手工删除不合理的剖分网边; 5、点击″Tin模型″→点击″追踪剖分等值线″; ①选″等值线套区″→选″绘制色阶″→可选或不选″保留边 Surfer到MapGIS的等值线图转换 李锐 【期刊名称】《电脑知识与技术》 【年(卷),期】2015(000)002 【摘要】Through research on the exchange data format of the Surfer and MapGIS, found the DXF and MIF both formats have their respective advantages during the data conversion. By saving Surfer contour map as different formats, using the MapGIS file conversion module , keeping good type file, Surfer contour map will reappear perfectly.%为将Surfer 软件绘制的等值线图转换为MapGIS等值线图,研究对比了通过MapGIS自带的文件转换模块利用DXF和MIF两种中间数据格式进行图形转换的效果,优选转换效果较好的结果图形文件在MapGIS工程中点、线、面文件的组合,完美再现了Surfer等值线图,从而为等值线图从Surfer到MapGIS的转换提供了一种实用方法。 【总页数】3页(208-210) 【关键词】等值线图;Surfer;MapGIS;DXF;MIF 【作者】李锐 【作者单位】广州海洋地质调查局,广东广州510760 【正文语种】中文 【中图分类】TP311 【相关文献】 1.综合运用Surfer和MapGIS绘制水深等值线图的方法探讨 [J], 高佩兰; 崔秀 mapgis的一些实用方法和处理技巧 一、如何将mapgis的图形插到word、excel、PowerPoint 中 首先点取mapgis菜单“其他->OLE拷贝”,接着打开word,点取“粘贴”。 Mapgis数据就复制到word文档里。 二、空心字格式 使用空心字时,字体采用相应字体编号的负数。如:-3表示黑体空心字。 三、合并区 1、可以在屏幕上开一个窗口,系统就会将窗口内的所有区合并,合并后区的图形参数及属性与左键弹起时所在的区相同。 2、也可以先用菜单中的选择区功能将要合并的区拾取到,然后再使用合并区功能实现。 3、还可以先用光标单击一个区,然后按住 CTRL 键,在用光标单击相邻的区即可。 四、翻转图形 在Mapgis中的其它下面整图变换中比例参数的X比例中输入法-1或Y比例中输入-1后确定。 五、CAD转化为MAPGIS 1.将CAD文件另存为2004/2000DXF格式。 2.在MAPGIS主程序中选择“文件转换”。 3.输入中选择转入DXF文件,确定并复位 4.保存点线文件(面无法转化) 六、MAPGIS转化为CAD 1.在MAPGIS主程序中选择“文件转换”。 2.分别装入点线文件,复位并全选。 3.输出中选择“部分图形方式输入DXF”全选并确定。 4.打开保存的DXF文件,用CAD复位显示图形,并改字体样式。 5.保存成CAD格式。 七、如何把JPG格式的转成MSI格式 图象处理----------图象分析模块。在里面点:文件--------数据输入--------转换数据类型(选JPG)---------添加文件---------转换转换后的格式为mapgis的msi影像文件!转换为MSI文件格式后再在输入编辑里,导入后矢量化。 八、在电脑里如何做剖面图,不用手画,而且精度更高! Mapgis切剖面 其实这些方法都是最古老的方法的延伸,我先介绍一下最古老的方法 主要分以下几步, 1、工程裁剪 准备工作a、先在我的电脑里新建一个文件夹,用来存放你裁剪好的文件 b、建立裁剪区,新建区——区编辑——输入弧段——图形造区,做好这些之后保 存所新建的区再把该区文件从工程中删除。 其它——工程裁剪 选择你所新建好的文件夹,弹出窗口 添加全部—裁剪类型(内裁)—裁剪方式(制图裁剪)装入裁剪框(区文件,即你之前做好的那个区文件)—生成被裁工程(此时在在窗口左方就会出现你所要裁剪的工程)—开始裁剪—退出—关闭工程。 2、旋转图纸 打开你裁剪好的工程工程在你之前所新建的文件夹里 其它——整图变换——键盘输入参数 按上图设置好且左下角的原点X,原点Y 输入窗口内的任意一个坐标 (主要目的是以防旋转 之后出现飞点的情况)。旋转角度要经你的勘探线的方位角换算,注:mapgis窗口的方位里和正常的不一样,指正右端是0°,再按逆时针旋转为正,自己体会一下。 做好之后在点击确定,再1:1窗口。 3、这个时候勘探线已经是水平了,再在勘探线与每根等高线的交点出点上一个点, 这个点建议大家用247号点十字架,当然也是个人习惯了。接着就是坐标移动点了,点编辑——移动点坐标调整,再之后就是看好每根等高线的高程,等高线的高程是好多那么移动点的坐标Y坐标你就输多少,所有的点都做好之后最后就是点连线了(线编辑——输入线——用点连线)注意你画的地形线的两端,因为你勘探线的两端并不一定是在与等高线的交点上,这时候就要大概的推测一下高程是好多了, 4、这样就把地形线顺利的切下了,下一步投影工程与坐标网,这一步比较简单我就 主要讲下坐标网,在坐标网与勘探线的交点出点上一个点子图,然后经过这个点像地形线引铅垂线就ok了其他的工程投影方法类似, 5、将做好的图稍微修饰一下就完成了。再完成平面图。 其实我发现这个过程还是比较繁琐,下面我把这些过程稍微简化一下,各自看好自己的mapgis功底,能领会哪种方法就用哪种方法, 方法一: 第一步与第二步照旧(如果熟练的话这两步也就是分分钟的事情就搞定)第三步我们省略在各个交点处放点的步骤,ctrl+s(选择图元)——选择勘探线——勘探线闪烁——ctrl+c——再把等高线所在的项目打上勾——ctrl+v——其他——自动剪断线(此时勘探线已经被剪断成一段一段),——线编辑——移动线坐标调整——移动每一根勘探线同样按高程移动,最后再画地形线,用F12捕捉线的端点。(注意是捕捉每一段线后一个端点)同时此时剖面图的平面图就取下面的之前所裁剪和旋转的图。其他的方法类似。 Section制作勘探线剖面图 1.数据准备:section v4.3、mapgis6.7软件,mapgis地质图(地质图 层、界限、矿体界限、产状完整)、等高线文件、勘探线文件、钻孔文件等。 2.首先,使所有文件都处于编辑状态,保持等高线文件处于正在编 辑状态下,在section中点击剖面图——读取地形数据——选线读取(在此处选择之前设计好的勘探线),选高程,然后确定。 3.其次,保持地质区(弧段)图层文件处于正在编辑状态下,在section 中点击剖面图——剖面信息——读取地质信息,在下方弹出的表中,修改地层产状和接触产状为我们实际的数值,修改地层花纹和接触关系等,点存储按钮(注意:千万不要点退出按钮,关掉该表)。 4.然后,在section中点击剖面图——剖面信息——设计钻孔按钮, 在之前已经设置好钻孔的位置点击一下鼠标左键,在弹出的界面中修改钻孔名称、孔深、方位角、倾角等信息,点击存储按钮,然后点退出按钮。 5.最后,在section中点击剖面图——图切剖面按钮,在弹出的对话 框中设置文件的保存位置,然后点确定。至此,初步的勘探线剖面图算是制作完成。 6.利用section平面投影功能给勘探线剖面探槽上样 详细步骤如下: 先上一张我上完探槽样的勘探线剖面图 思路:利用section平面投影功能生成探槽的平面投影,然后再将样品投影到地形线上。 步骤: 1)、用section图切剖面如下图 2)、在平面掠影表里输入数据 平面工程表里的数据如下(这里因为勘探线方向为130°,和探槽方向一致,故探槽的方位输成90°,有夹角的情况下,输入夹角度数)。 注意地形线粘贴在平面图上方,别太远,槽头位置要对齐。 5)、将平面投影数据表样品起终点坐标复制到探槽样轨投影表中计算表内计算得出探槽样品在地形线上的投影坐标 思路:通过将平面投影表中探槽样品的起终点坐标投影到探槽地形线上从而得到探槽样 品在地形线上的投影坐标。 ①计算样品起点坐标在探槽地形线上投影的坐标 A.将探槽平面投影样品数据表内K:L两列样品起点坐标数据复制到探槽投影表中计算 表A:D列 如何用MAPGIS矢量等值线平面图生成彩色等值线立体图1.1"输入编辑"系统中,给绘制的等值线平面图添加属性字段。 1.工作区/装入文件/装入线文件。 2.编辑/参数编辑/编辑线属性结构。 点击"编辑线属性结构"系统弹出下图,增加属性字段"gc"。 按回车,系统弹出下图。选择"双精度型"字段类型,OK。 给出字段长度、小数位数,回车。 3.矢量化/高程自动赋值。 用鼠标在等值线图上拉一直线赋高程值,根据已设置的"当前高程"为基值,自动逐条按"高程增量"递增赋值。 4.工作区/存文件 1.2 进入"DTM分析"系统,生成彩色等值立体图。 1.文件/打开数据文件/线数据文件。 2.处理点线/线数据高程点提取。 点击"线数据高程点提取"系统弹出对话框: 从装入的线文件"线属性高程域"中选取高程值。设置提点方式及提点参数,确定。即可从原图的某一属性字段提取高程数据点。 3.Grd模型/离散数据网格化。 选择"离散数据网格化"菜单,系统弹出如下对话框。 该功能对未网格化数据网格化。用户可根据需要修改网格化参数中的有关项,而通过修改网格间距,可以调整网格的疏密程度。然后通过"文件换名",将离散数据(*.wl)转换成网格数据(*.grd)。 4.彩色等值线立体图绘制。 选择"彩色等值线立体图绘制",系统提示用户选择(1.grd)文件,并弹出如下对话框。 用户可根据需要选择立体图投影参数、类型、制图精度。再点击上图中"等值图参数设置",系统弹出如下对话框: 用户可根据需要设置:等值线套区、等值层值等。 系统根据用户设置的各项参数生成彩色等值立体图,如下图所示。 1、概述 1.1 文件组成 MAPGIS数据文件主要包括工程文件文件和工程内各工作区的文件。工作区是MAPGIS提出的一个概念,简单地说,工作区就是一个数据池,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个MAPGIS数据文件。数据文件主要有以下几种: 点工作区(.MPJ文件):工程文件,存放工程中所有的工作区文件 点工作区(.WT文件):点(PNT) 线工作区(.WL文件):线(LIN)、结点(NOD) 区工作区(.WP文件):线(LIN)、结点(NOD)、区(REG) 网工作区(.WN文件:线(LIN)、结点(NOD)、网(NET) 表工作区(.WB文件):无空间实体,仅有表格记录 1.2 数据类型 点元:点元是点图元的简称,有时也简称点,所谓点元是指由一个控制点决定其位置的有确定形状的图形单元。它包括字、字符串、文本、子图、圆、弧、直线段等几种类型。 它与“线上加点”中的点概念不同。 弧段:弧段是一系列有规则的,顺序的点的集合,用它们可以构成区域的轮廓线。它与曲线是两个不同的概念,前者属于面元,后者属于线元。 区/区域:区/区域是由同一方向或首尾相连的弧段组成的封闭图形。 结点:结点是某弧段的端点,或者是数条弧段间的交叉点。 属性:就是一个实体的特征,属性数据是描述真实实体特征的数据集。显示地物属性的表通常称为属性表,属性表常用来组织属性数据。 2、工程文件 2.1基本构成 工程文件数据由头信息+各工作区信息数据构成,其中头信息是0-1112字节,各工作区信息是400各字节,按顺序首尾存放在文件中。 2.2头信息 头信息存储位置为0-1112字节,主要存储包含的工作区文件数、图形范围、比例、位移等信息。 QQ上有很多用户对线型的使用有些疑惑,现在我把有关线型的一些常见问题整理一下,主要是有关显示的方面,不过在使用子图、填充符号时也可作为参考。个人体会整理,有不妥的地方欢迎指出。 对应版本:MapGIS K9 MapGIS K9 SP1 1 关于编辑框的大小 (地图编辑器->系统库管理->符号库管理->符号编辑)上图中绿色的矩形框即为编辑框,默认的编辑框大小为1×1,其实并不对应什么单位。有的用户问是不是毫米或者米,其实只需简单理解为MapGIS坐标系的1个单位。就像(100,100)这个坐标,在坐标系中的坐标单位的含义还是与具体的空间参照系有关。 当然编辑框可以改变大小: 例如可以设置为2×2或者其他数值。但是实际情况是,当前绘制的符号编辑结束保存后,下次打开时还是默认的1×1大小,而图形则按照相应比例进行缩放。例如2×2的编辑框,保存图形后再打开结果就是原图形变为1/2大小,如图: 编辑框设为2×2进行编辑 再次打开后符号大小为1×1 之所以强调这个问题,是明确MapGIS的符号大小都是1×1的(或者说编辑框是1×1大小),即便你在编辑的时候不是这样。当然,如果你编辑的是一个子图符号,可以超出编辑框进行编辑(虽然不推荐这样),在这种情况下编辑后保存的子图大小是超过1×1范围的,但是编辑框仍是1×1。比如,已制作了如下一个子图符号,编辑框大小1×1: 该子图符号保存后保存原大小,但是如果把编辑框设为2×2: 保存后再次打开编辑,则变为: 即原符号图形缩小为原先的1/2。 2 线型显示的控制 (线编辑->修改线参数) 如上图,线的参数中有线比例x系数和线比例y参数,这是控制线型符号在沿线方向的水平和垂直方向的缩放比例。线型的编辑框是1×1,或者说一个线符号长最多为1,但是可以通过调整这个x系数使之显示时变长,例如图中的线型符号长为0.4,x系数设为10则显示时长为4,在地图视图下使用此线型绘制的线: 线比例y参数的含义类似。 3 笔宽模式 对于老用户,使用过6.5或6.7,线型的笔宽模式有两种,一个是可变线宽,另一个是固定线宽。可能有些老用户也没有注意过,使用有些线型时线的线宽设置不起作用,可能出现线参数中线宽设置很大,还原显示也打开的情况下线还是显示得很细的情况,这个时候可能就是笔宽模式的缘故。 Mapgis里面excel表格的输入与导出步骤和MapGIS做剖面 一、输入 1. mapgis主界面→使用服务→报表编辑; 2.文件/新建报表文件构造表格/初始表格,构造表格/构造固定表宽,在此可以设置表格的列宽; 3.点击菜单中的,拖出表格;拖出自己需要的列数、行数(拖出表格的时候,左下角可以显示x、y=多少); 4.建索引/编辑区块,在已构造好的表格左上方第一个单元格单击鼠标左键拖动到右下角最后一个表格内,左键确认; 5.复制ECXEL里的表格数据,建索引/粘贴剪贴内容,然后根据实际情况进行调整;文件/生成MAPGIS数据,将表格转成点,线文件就可以了。 二、输出 1.首先建一个Excel表,命名为“属性导出“1.xls”; 2.库管理→属性库管理→文件→导出; 3.系统弹出“导出内数据”对话框,单击“打开”按钮,打开工程文件“中心城区.MPj”中的“DLTB.WP”文件。 4.配置数据源:单击“数据源”右边的“+”按钮,系统弹出“ODBC数据源管理器”对话框。 5.单击“添加”按钮。创建新数据源。 6.选择“Driver do Microsoft Excel(*xls)”项,单击“完成”按钮; 7. 系统弹出“数据源安装”窗口,数据源名为:111。单击“选择工作簿”按钮。找到先前新建的Excel表“1.xls”,并将窗口右边的“只读”属性去掉,单击“确定”按钮。依次单击“确定”按钮,数据源配置完毕,返回“导出内数据”对话框,在数据源右边的下拉条中,可以看到上一步配置的数据源“111”,选中该数据源。 8. 将导出的表命名为“导出数据”,这时“导出”按钮被激活,单击“导出”按钮,系统提示“导出成功”,数据导出完毕。 1. 首先打开一张等值线图 子图、线形、图案的制作方法 先来认识一下符号编辑框,如下图,符号编辑框为高各一毫米的正方形,高宽都20等分,所以每一个小格刻度为0.05毫米,中心坐标为(0,0),好了我们已经认识了符号编辑框,下面我们通过具体示例来学习符号线型的制作方法。 一、子图 以1:1000地形图的古亭符号为例介绍它的制作过程, 由国标(GB )查得古亭各组成部分的尺寸大小如图, 由尺寸大小我们可得到各组成部分的比例关系,然后由比例关系把古亭这个符号缩放到边长为1mm 的符号编辑框中。由此我们可以算出古亭符号各组成部分都乘以1/3后的长度就是在符号编辑框中的尺寸,见左图 3mm 3mm 1.5m 1.5m 步骤:系统库→编辑符号库→弹出编辑符号窗口→点击清除→按符号各部分乘1/3后的长度在1mm见方的编辑框中用“输入线”画出→见下图 编辑中输入 子图后的坐 标位置。 注意:这里输入线的宽度就是最终输入子图的显示宽度,所以要注意线划的宽度确定符号线划的粗细。也可以用键盘输入线画子图更为精确。 下一步:保存符号, “子图编号”缺省为最后一个序号。也可以输入258以内的 数来替换掉现有的子图符号。“缺省颜色”为做子图所用颜色 时,在编辑中输入子图颜色可变,“缺省颜色”为其他的值时, 子图颜色不可变。 下一步就是怎样在输入子图时确定子图的高和宽,可以把高和宽看成是比例系数,就是一毫米见方中的符号乘以多大的系数可得到国标(GB)规定尺寸大小,上面的古亭符号乘了1/3后缩放到了符号编辑框,同理当输入子图时子图的高和宽取3时就可得到规定的尺寸大小。 还有一个注意的是:符号编辑框中央的小十字就是在编辑中输入子图后的坐标位置。 MAPGIS 做图步骤 电脑制图基本步骤: 在做一幅图之前,先新建一个文件夹(用来保存与该图有关的所有文件),用图名给该文件夹命名,例:×××矿1号剖面,之后将扫描的图放入该文件夹中。 打开MAPGIS主菜单,进行系统设置,把工作目录设置为刚才新建的文件夹(×××矿1号剖面),其余三项在安装MAPGIS软件时设置好。 因为扫描文件为(*.tif)格式,在MAPGIS中使用不变,因此需要转换成MAPGIS可使用的文件格式(*msi),需要进行数据类型转换: MAPGIS主菜单→图象处理→图象分析(镶嵌配准)→ 文件→数据输入→转换数据类型:(*.tif)→添加文件(扫描的文件)→转换 图形处理→输入编辑→确定:新建工程(把做的这张图看作一个工程),在左区点右键→新建区、新建线、新建点→ 矢量化→装入光栅文件→描图 其它常用功能: 做平面图之前,生成标准图框: 自动生成图框: MAPGIS主菜单→实用服务→投影变换→ 系列标准图框→键盘生成矩形图框→ 矩形图框参数输入:坐标系:国家坐标系;带号:20/40;注记:公里值。边框参数:内间距10,外间距1,边框宽1。网线类型:绘制实线坐标线;比例尺:图的比例尺(例:5000);矩形分幅方法:任意公里矩形分幅。 图廓参数:横向起始公里值(去带号):例20556000→556.000,纵向起始公里值:例4820.000,横向结束公里值:,纵向结束公里值:, 图廓内网线参数:网起始值(根据起始公里值定):,网间隔(根据比例尺定):; (例横向起始值为556.020,比例尺为5000,网起始值应为:556.500,网间隔为0.5) 图幅名称:××××,图框文件名:×××,线参数设置→点参数设置→确定 因为扫描图纸过程中会产生变形,为校正所产生的误差,需要用标准图框对扫描图转换后的(*.msi)格式的图纸进行图像校正,如下: 图像校对: MAPGIS主菜单→图象处理→图象分析→ 打开影像(*.msi文件)→ Mapgis小技巧 一、如何将mapgis的图形插到word、excel、PowerPoint中 首先点取mapgis菜单“其他->OLE拷贝”,接着打开word,点取“粘贴”。Mapgis数据就复制到word文档里。 二、空心字格式 使用空心字时,字体采用相应字体编号的负数。如:-3表示黑体空心字。 三、合并区 1、可以在屏幕上开一个窗口,系统就会将窗口内的所有区合并,合并后区的图形参数及属性与左键弹起时所在的区相同。 2、也可以先用菜单中的选择区功能将要合并的区拾取到,然后再使用合并区功能实现。 3、还可以先用光标单击一个区,然后按住CTRL键,在用光标单击相邻的区即可。 四、翻转图形 在Mapgis中的其它下面整图变换中比例参数的X比例中输入法-1或Y比例中输入-1后确定。 五、CAD转化为MAPGIS 1.将CAD文件另存为2004/2000DXF格式。 2.在MAPGIS主程序中选择“文件转换”。 3.输入中选择转入DXF文件,确定并复位 4.保存点线文件(面无法转化) 六、MAPGIS转化为CAD 1.在MAPGIS主程序中选择“文件转换”。 2.分别装入点线文件,复位并全选。 3.输出中选择“部分图形方式输入DXF”全选并确定。 4.打开保存的DXF文件,用CAD复位显示图形,并改字体样式。5.保存成CAD格式。 七、如何把JPG格式的转成MSI格式 图象处理----------图象分析模块。在里面点:文件--------数据输入--------转换数据类型(选JPG)---------添加文件---------转换转换后的格式为mapgis的msi影像文件!转换为MSI文件格式后再在输入编辑里,导入后矢量化。 八、在电脑里如何做剖面图,不用手画,而且精度更高! 1、先把MAPGIS图生成JPG格式,在PHOTOSHOP中图像—图像大小—文挡大小中输入经过变化后的宽度和高度数字(根据剖面 mapgis转为cad步骤出现字体为问号的前奏解决办法: 复位窗口=Z+空格健+A+空格健格式文字样式宋体样式名选择为STANDARD(大写) 记住一定要选择宋体,样式名选择为STANDARD(大写) 改为大字体 很多实用MAPGIS的用户不理解“图形造区”和“手工造区”的区别:MAPGIS6.X版本中―图形造区‖与MAPGIS6.X版本―手工造区‖有什么区别? 从出图方面上看,―手工造区‖与―图形造区‖都将某一区域添上适当的颜色,效果是一样的;从拓朴结构上说,―手工造区‖中的区是不具有拓朴结构,即弧段仍没有封闭,而―图形造区‖中的区是具有拓朴结构,即弧段已封闭,故―图形造区‖在拓朴结构方面比较严格,适用深层次的空间分析。 有会员反应,字库里面没有的字或者生僻字输入不进去: 在地名用字中,生僻字很多,要输入的注记,计算机字库里往往没有。操作方法如下: (1) 先在符号库里造出用白色线及输入白色区域的矩形子图来,用此子图来压盖注记多余的笔划。 (2) 输入2 或3 个含有新字内容的字,用白色子图符号压盖不需要部分,然后所需部分再组成新字。 MAPGIS快速提取点坐标至TXT文件中: MAPGIS文件未自动生成坐标属性,如果要知道坐标,必须先进行提取,提取后即可快速生成坐标文件。这些操作都需要在投影变换模块中完成。 1、―MAPGIS投影变换‖模块下―工具‖菜单―点位置转为属性‖,进入―点位置或注释生成属性‖对话框。--―选择文件方式‖:根据情况选择工作区或文件,这里选择文件。--―图元文件‖:选择你要提坐标的文件。--―属性结构‖:建立―字段名称‖ X -―字段类型‖浮点型-―字段长度‖-12 -―小数点位数‖-6,同样,建立―字段名称‖ Y -―字段类型‖浮点型-―字段长度‖-12 -―小数点位数‖-6 ,完成。--依次单击―转换‖-―保存‖-―确定‖。 2、单击―工具‖菜单下―属性生成文本文件‖,弹出―图元属性转换生成文本文件‖对话框。--同样选择―文件‖而非工作区。--―图元文件‖:选择要提坐标的文件。--―生成文件‖:保存为要存放坐标的txt文件--依次选择―转换‖ -―确定‖。包含坐标的文件就保存成功了。 MapGis6.7的几种捕捉点功能: 在mapgis的绘图操作中,特别是绘制线和造基线操作,捕捉点以达到精确绘图是非常重要,也要经常用到。其实mapgis6.7捕捉点功能是很强大的!以下是据我所知的捕捉点功能。 首先,是几种常用的捕捉点功能: 1、Shift+鼠标左键,捕捉线上任何结点! 2、Ctrl+鼠标右键,捕捉起点,完成线闭合。 3、很强的F12,捕捉线的中点、线的分段点(n/m)、距离值(捕捉距离线的起始点多少长度的点)、线头线尾、靠近线(捕捉鼠标附近线上的点)、靠近点(捕捉点文件上的点,不同于用点连接线,不它灵活)。 4、用点连接线,捕捉点文件上的点。 5、解析造线中跟多捕捉点功能。 电脑制图基本步骤: 在做一幅图之前,先新建一个文件夹(用来保存与该图有关的所有文件),用图名给该文件夹命名,例:×××矿1号剖面,之后将扫描的图放入该文件夹中。 打开MAPGIS主菜单,进行系统设置,把工作目录设置为刚才新建的文件夹(×××矿1号剖面),其余三项在安装MAPGIS软件时设置好。 因为扫描文件为(*.tif)格式,在MAPGIS中使用不变,因此需要转换成MAPGIS可使用的文件格式(*msi),需要进行数据类型转换: MAPGIS主菜单→图象处理→图象分析(镶嵌配准)→ 文件→数据输入→转换数据类型:(*.tif)→添加文件(扫描的文件)→转换 图形处理→输入编辑→确定:新建工程(把做的这张图看作一个工程),在左区点右键→新建区、新建线、新建点→ 矢量化→装入光栅文件→描图 其它常用功能: 做平面图之前,生成标准图框: 自动生成图框: MAPGIS主菜单→实用服务→投影变换→ 系列标准图框→键盘生成矩形图框→ 矩形图框参数输入:坐标系:国家坐标系;带号:20/40;注记:公里值。边框参数:内间距10,外间距1,边框宽1。网线类型:绘制实线坐标线;比例尺:图的比例尺(例:5000);矩形分幅方法:任意公里矩形分幅。 图廓参数:横向起始公里值(去带号):例20556000→556.000,纵向起始公里值:例4820.000,横向结束公里值:,纵向结束公里值:, 图廓内网线参数:网起始值(根据起始公里值定):,网间隔(根据比例尺定):; (例横向起始值为556.020,比例尺为5000,网起始值应为:556.500,网间隔为0.5) 图幅名称:××××,图框文件名:×××,线参数设置→点参数设置→确定 因为扫描图纸过程中会产生变形,为校正所产生的误差,需要用标准图框对扫描图转换后的(*.msi)格式的图纸进行图像校正,如下: 图像校对: MAPGIS主菜单→图象处理→图象分析→ 打开影像(*.msi文件)→ 镶嵌融合→打开参照文件→参照线文件→ 镶嵌融合→删除所有控制点→ 镶嵌融合→添加控制点(点原图(左侧)的某点,再点右侧图对应的点,之后连续三次空格,)→MAPGIS67教程(制图详细步骤讲解)
mapgis作等值线图教程
mapgis制图步骤及常用功能
MAPGIS图形编辑常用技巧
MAPGIS矢量等值线平面图生成三维模型
mapgis绘制等高线方法
MapGIS文件格式详解
MAPGIS绘制等值线
Surfer到MapGIS的等值线图转换
mapgis的一些实用方法和处理技巧
Mapgis切剖面讲解
mapgis制作钻孔勘探线剖面图详细步骤讲解
如何用MAPGIS矢量等值线平面图生成彩色等值线立体图
Mapgis文件格式详解(原)
mapgis线型的使用疑惑
Mapgis里面excel表格的输入与导出步骤和MapGIS做剖面
mapgis操作实例--子图、线形、图案的制作方法(标准)
MAPGIS 做图步骤
Mapgis小技巧
mapgis知识点
mapgis制图基本步骤