GIS技术分享

26 0 2018-09-19

GIS技术分享已经废弃了GIS技术分享已经废弃了

<p>01</p><p>05</p><p>02</p><p>03</p><p>04</p><p>韩少华</p><p>GIS技术分享</p><p>创建一个简单的地图</p><p><!doctype html><br /><html><br />\t<head><br />\t\t<meta charset=\"utf-8\"><br />\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><br />\t\t<meta name=\"viewport\" content=\"initial-scale=1.0, user-scalable=no, width=device-width\"><br />\t\t<title>创建一个简单的地图</title><br /><br />\t\t<style><br />\t\t\t#container {<br />\t\t\t\tposition: absolute</p><p><br />\t\t\t\ttop: 0</p><p><br />\t\t\t\tleft: 0</p><p><br />\t\t\t\tright: 0</p><p><br />\t\t\t\tbottom: 0</p><p><br />\t\t\t\twidth: 100%</p><p><br />\t\t\t\theight: 100%</p><p><br />\t\t\t}<br />\t\t</style><br />\t\t<script src=\"http://webapi.amap.com/maps?v=1.4.5&key=您申请的key值\"></script><br />\t</head><br />\t<body><br />\t\t<div id=\"container\"></div><br />\t\t<script><br />\t\t\tvar map = new AMap.Map('container', {<br />\t\t\t\tzoom: 11,//视图初始的焦距<br />\t\t\t\tcenter: [117.20, 39.13]//视图初始的中心点<br />\t\t\t})</p><p><br />\t\t</script><br />\t</body><br /></html></p><p>使用高德api绘制点线面圆并获取绘制后的信息<br /><br /> 重点:<br /> 高德api的插件引入<br /> 高德api的事件机制<br /></p><p>重点:<br /> 地图容器<br /> 地图创建<br /> api文档构成</p><p>api文档:http://lbs.amap.com/api/javascript-api/reference/map</p><p>api文档主要构成:<br /> 构造函数中的参数<br /> 类方法<br /> 可激活事件</p><p> //在地图中添加MouseTool插件<br /> var mouseTool = new AMap.MouseTool(map)</p><p><br /> AMap.event.addDomListener(document.getElementById('point'), 'click', function() {<br /> mouseTool.marker({offset:new AMap.Pixel(-14,-11)})</p><p><br /> }, false)</p><p><br /> AMap.event.addDomListener(document.getElementById('line'), 'click', function() {<br /> mouseTool.polyline()</p><p><br /> }, false)</p><p><br /> AMap.event.addDomListener(document.getElementById('polygon'), 'click', function() {<br /> mouseTool.polygon()</p><p><br /> }, false)</p><p><br /> <br /> AMap.event.addListener(mouseTool, 'draw', function (e) { //添加事件<br /> mouseTool.close()</p><p>//绘制结束后关闭鼠标控件<br /> //提取空间信息<br /> var geoJSON = new AMap.GeoJSON()</p><p><br /> geoJSON.addOverlay(e.obj)</p><p><br /> console.log(geoJSON.toGeoJSON())</p><p><br /> })</p><p>^_^</p><p>加载覆盖物到地图上</p><p>鼠标绘制覆盖物</p><p>重点:<br /> 覆盖物的几种构建方式<br /> 覆盖物的种类</p><p>构造方法构建</p><p>使用GeoJSON构建 (圆不能使用此方法)</p><p>点(marker)</p><p>折线(polyline)</p><p>面(polygon)</p><p>圆(circle)</p><p>常用覆盖物分类:</p><p>常用覆盖物的构建方式:</p><p>GeoJSON(覆盖物容器)</p><p>OverlayGroup(覆盖物容器)</p><p>多地图源的加载</p><p>重点:<br />第三方瓦片地图源的引入<br />高德UI库的引入<br />多地图源切换控件的使用</p><p>第三方瓦片地图的使用</p><p>new AMap.TileLayer({<br /> // 图块取图地址<br /> tileUrl: 'http://www.google.cn/maps/vt/pb=!1m4!1m3!1i[z]!2i[x]!3i[y]!' +<br /> '2m3!1e0!2sm!3i380072576!3m8!2szh-CN!3scn!5e1105!12m4!1e68!2m2!1sset!2sRo' +<br /> 'admap!4e0!5m1!1e0',<br /> zIndex: 100<br />})</p><p><br /></p><p>引入UI控件</p><p>添加\t\t<script src=\"//webapi.amap.com/ui/1.0/main.js?v=1.0.11\"></script></p><p>使用图层控制控件切换图层</p><p>见样例代码多数据源加载.html</p><p>搜索周边</p><p>重点:<br />使用JSTS库添加缓冲区<br />使用高德搜索控件<br />POI的介绍</p><p>JSTS简介</p><p>GitHub地址:https://github.com/bjornharrtell/jsts<br />JTS文档地址:http://bjornharrtell.github.io/jsts/1.2.0/apidocs/</p><p>缓冲区简介</p><p>缓冲区是地理空间目标的一种影响范围或服务范围,具体指在点、线、面实体的周围,自动建立的一定宽度的多边形或圆形</p><p>JSTS是一个Javascript符合OGC规范的简单要素空间位置关系判定和函数的类库,JSTS也是众所周知的java类库JTS的一个接口,JSTS是利用原JTS java源码通过 AST自动翻译转换而成并保持了该API,并对IO相关的部分类进行了选择性的并手动移植使其支持WKT,GeoJSON。</p><p>参考api文档:<br />鼠标控件:http://lbs.amap.com/api/javascript-api/reference/plugin#AMap.MouseTool</p><p>事件机制:http://lbs.amap.com/api/javascript-api/reference/event</p><p>参考文档:<br />覆盖物http://lbs.amap.com/api/javascript-api/reference/overlay</p><p>第三方瓦片地图的使用</p><p>new AMap.TileLayer({<br /> // 图块取图地址<br /> tileUrl: 'http://www.google.cn/maps/vt/pb=!1m4!1m3!1i[z]!2i[x]!3i[y]!' +<br /> '2m3!1e0!2sm!3i380072576!3m8!2szh-CN!3scn!5e1105!12m4!1e68!2m2!1sset!2sRo' +<br /> 'admap!4e0!5m1!1e0',<br /> zIndex: 100<br />})</p><p><br /></p><p>引入UI控件</p><p>添加\t\t<script src=\"//webapi.amap.com/ui/1.0/main.js?v=1.0.11\"></script></p><p>使用图层控制控件切换图层</p><p>见样例代码多数据源加载.html</p><p>后端的空间处理库</p><p>JSTS简介</p><p>GitHub地址:https://github.com/bjornharrtell/jsts<br />JTS文档地址:http://bjornharrtell.github.io/jsts/1.2.0/apidocs/</p><p>缓冲区简介</p><p>缓冲区是地理空间目标的一种影响范围或服务范围,具体指在点、线、面实体的周围,自动建立的一定宽度的多边形或圆形</p><p>JSTS是一个Javascript符合OGC规范的简单要素空间位置关系判定和函数的类库,JSTS也是众所周知的java类库JTS的一个接口,JSTS是利用原JTS java源码通过 AST自动翻译转换而成并保持了该API,并对IO相关的部分类进行了选择性的并手动移植使其支持WKT,GeoJSON。</p><p>空间查询必备:</p><p>06</p><p>07</p><p>常用函数:<br /> 获取缓冲后的几何对象 ST_Buffer(geometry, double, [integer])<br /> 根据WKT获取空间对象 ST_GeometryFromText(text,[]) <br /> 获取两个几何对象间的距离 ST_Distance(geometry, geometry) <br /> 如果两个几何对象间距离在给定值范围内,则返回TRUE ST_DWithin(geometry, geometry, float) <br /> 判断两个几何对象是否相等 <br />(比如LINESTRING(0 0, 2 2)和LINESTRING(0 0, 1 1, 2 2)是相同的几何对象) ST_Equals(geometry, geometry) <br /> 判断两个几何对象是否分离 ST_Disjoint(geometry, geometry) <br /> 判断两个几何对象是否相交 ST_Intersects(geometry, geometry) <br /> 判断两个几何对象的边缘是否接触 ST_Touches(geometry, geometry) <br /> 判断两个几何对象是否互相穿过 ST_Crosses(geometry, geometry) <br /> 判断A是否被B包含 ST_Within(geometry A, geometry B) <br /> 判断两个几何对象是否是重叠 ST_Overlaps(geometry, geometry) <br /> 判断A是否包含B ST_Contains(geometry A, geometry B) <br /> 判断A是否覆盖 B ST_Covers(geometry A, geometry B) <br /> 判断A是否被B所覆盖 ST_CoveredBy(geometry A, geometry B) <br /> 将几何对象转化到指定空间参考 ST_Transform(geometry,integer) </p><p>postgis插件<br /></p><p>1). 基础库:JTS<br />2). geotools系列:gt-epsg-wkt、gt-api、gt-geojson等<br />3). JavaAPIforKml</p><p></p>