(转)WKT转换工具terraformers
http://blog.csdn.net/gisshixisheng/article/details/53150111
概述:
前面的文章中,提到了Arcgis中实现wkt转换为geometry,但是这种转换仅实现了简单的点(point)、线(polyline)和面(polygon)的转换,对于复杂点或者复杂多边形没有涉及,在本文讲述通过terraformers加载展示wkt。
terraformers简介:
terraformers是Esri的一个开源项目,主要功能如下:

大家可通过http://download.csdn.NET/detail/gisshixisheng/9681608下载相关的js文件,也可直接在github上下载,github上的地址为https://github.com/Esri/Terraformer。
实现代码:
1、Arcgis加载WKT
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
- <title>Hello Map</title>
- <link rel="stylesheet" href="http://localhost/arcgis_js_311/api/arcgis_js_api/library/3.11/3.11/dijit/themes/tundra/tundra.css">
- <link rel="stylesheet" href="http://localhost/arcgis_js_311/api/arcgis_js_api/library/3.11/3.11/esri/css/esri.css"><style>
- html, body, #map {
- height: 100%;
- width: 100%;
- margin: 0;
- padding: 0;
- }
- </style>
- <script src="../../plugin/terraformer/terraformer.js"></script>
- <script src="../../plugin/terraformer/terraformer-wkt-parser.js"></script>
- <script src="../../plugin/terraformer/terraformer-arcgis-parser.js"></script>
- <script src="http://localhost/arcgis_js_311/api/arcgis_js_api/library/3.11/3.11/init.js"></script>
- <script src="../../plugin/jquery/jquery-1.8.3.js"></script>
- <script>
- var map;
- require([ "esri/map",
- "esri/layers/ArcGISTiledMapServiceLayer",
- "esri/layers/GraphicsLayer",
- "esri/graphic",
- "esri/geometry/Point",
- "esri/geometry/jsonUtils",
- "esri/symbols/SimpleMarkerSymbol",
- "esri/symbols/SimpleLineSymbol",
- "esri/symbols/SimpleFillSymbol",
- "esri/Color",
- "dojo/domReady!"
- ],
- function(Map,
- Tiled,
- GraphicsLayer,
- Graphic,
- Point,
- geometryJsonUtils,
- SimpleMarkerSymbol,
- SimpleLineSymbol,
- SimpleFillSymbol,
- Color){
- map = new Map("map");
- var tiled = new Tiled("http://localhost:6080/arcgis/rest/services/lzugis/base_china/MapServer");
- map.addLayer(tiled);
- var mapCenter = new Point(103.847, 36.0473, {"wkid":4326});
- map.centerAndZoom(mapCenter,1);
- var gLayer = new GraphicsLayer();
- map.addLayer(gLayer);
- gLayer.on("click",function(feature){
- console.log(feature);
- });
- var wkts = [
- "POINT(107.5758285931443 29.7822116459692)",
- "LINESTRING(120.18304604073 30.3305841465568,108.805692477062 32.0850224203499)",
- "POLYGON((102.797302689433 36.5936423859273,105.519115206186 29.4789248520356,100.346180647351 19.9699202912212))"
- ];
- map.on("load",function(){
- for(var i=0,len = wkts.length;i<len;i++){
- var primitive = Terraformer.WKT.parse(wkts[i]);
- var arcgis = Terraformer.ArcGIS.convert(primitive);
- var geometry = geometryJsonUtils.fromJson(arcgis);
- var symbol = getSymbol(geometry.type);
- var gfx = new Graphic(geometry,symbol);
- gLayer.add(gfx);
- }
- });
- function getSymbol(geotype){
- var symbol = null;
- if(geotype==="point"){
- symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 12,
- new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
- new Color([255,0,0]), 1),
- new Color([0,0,255,255]));
- }
- else if(geotype==="polyline"){
- symbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
- new Color([255,0,0]), 2);
- }
- else{
- symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
- new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT,
- new Color([255,0,0]), 2),new Color([255,255,0,0.25])
- );
- }
- return symbol;
- }
- });
- </script>
- </head>
- <body>
- <div id="map"></div>
- </body>
- </html>
效果:

2、leaflet加载WKT
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
- <title>leaflet</title>
- <link rel="stylesheet" href="../../plugin/leaflet/leaflet.css" type="text/css">
- <style>
- body {
- padding: 0;
- margin: 0;
- }
- html, body, #map {
- height: 100%;
- }
- .leaflet-control-attribution{
- display: none;
- }
- </style>
- <script src="../../plugin/jquery/jquery-1.8.3.js"></script>
- <script src="../../plugin/terraformer/terraformer.js"></script>
- <script src="../../plugin/terraformer/terraformer-wkt-parser.js"></script>
- <script src="../../plugin/leaflet/leaflet.js"></script>
- <script>
- var map;
- $(window).load(function() {
- map = L.map('map').setView([35.851354460363,104.21390114103], 4);//35.851354460363,104.21390114103
- var wms = L.tileLayer.wms("http://localhost:8088/geoserver/lzugis/wms", {
- layers: 'province',
- format: 'image/png',
- transparent: true,
- version:'1.1.1'
- });
- map.addLayer(wms);
- function onEachFeature(feature, layer) {
- var popupContent = "<p>I started out as a WKT " +
- feature.type + ", but now I'm a Leaflet vector!</p>";
- if (feature.properties && feature.properties.popupContent) {
- popupContent += feature.properties.popupContent;
- }
- layer.bindPopup(popupContent);
- }
- var wkts = [
- "POINT(107.5758285931443 29.7822116459692)",
- "LINESTRING(120.18304604073 30.3305841465568,108.805692477062 32.0850224203499)",
- "POLYGON((102.797302689433 36.5936423859273,105.519115206186 29.4789248520356,100.346180647351 19.9699202912212))"
- ];
- var geojsons = [];
- for(var i=0,len = wkts.length;i<len;i++){
- var geojson = Terraformer.WKT.parse(wkts[i]);
- geojsons.push(geojson);
- }
- var layer = L.geoJson(geojsons, {onEachFeature: onEachFeature}).addTo(map);
- });
- </script>
- </head>
- <body>
- <div id="map"></div>
- </body>
- </html>
效果:

--------------------------------------------
(转)WKT转换工具terraformers的更多相关文章
- Unicode编码解码在线转换工具
// Unicode编码解码在线转换工具 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standar ...
- android px,dp,sp大小转换工具
package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类<br/> ...
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- Rsa加解密Java、C#、php通用代码 密钥转换工具
之前发了一篇"TripleDes的加解密Java.C#.php通用代码",后面又有项目用到了Rsa加解密,还是在不同系统之间进行交互,Rsa在不同语言的密钥格式不一样,所以过程中主 ...
- ubuntu下编码转换工具
ubuntu打开windows下的txt或者代码文件,经常会出现乱码, ubuntu自带一种转换工具,是命令行的,下面提供一种最简单的方法进行转换 比如要转换的文件为1.txt,进入1.txt的目录 ...
- 日期转换工具类 CommUtil.java
package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...
- 视频转换工具 Transmageddon
点这里 Transmageddon 是一个采用 Python 语言开发的视频转换工具,支持输出几乎所有的视频格式,同时也可以生成指定平台下的视频格式. 软件界面如下图所示
- Base64 图片转换工具
以前在写asp的后台的时候,有一个上传功能是必须的,那时候进行的图片预览(未上传前)其实就是获取本地的图片路径来显示图片,但是随着HTML5的出现,可以把图片通过编码来实现预览. 在雅虎的36条速度优 ...
- web字体格式及几种在线格式转换工具介绍
原文地址:http://blog.csdn.net/xiaolongtotop/article/details/8316554 目前,文字信息仍是网站最主要的内容,随着CSS3技术的不断成熟,Web字 ...
随机推荐
- 笔记本能连上WIFI网络,但是无法上网怎么办
在插网线的台式机上登陆192.168.1.1,点击无线设置,修改一下SSID号,别的什么都不用改. 然后保存,需要重启路由器.重启之后再用笔记本连接新的无线网络即可.
- 连通分量模板:tarjan: 求割点 && 桥 && 缩点 && 强连通分量 && 双连通分量 && LCA(近期公共祖先)
PS:摘自一不知名的来自大神. 1.割点:若删掉某点后.原连通图分裂为多个子图.则称该点为割点. 2.割点集合:在一个无向连通图中,假设有一个顶点集合,删除这个顶点集合,以及这个集合中全部顶点相关联的 ...
- HDU1236 排名 题解
Problem Description 今天的上机考试尽管有实时的Ranklist,但上面的排名仅仅是依据完毕的题数排序,没有考虑 每题的分值,所以并非最后的排名.给定录取分数线.请你敲代码找出最后 ...
- iOS 保存视频AVAssetWriter
错误的CMTime导致保存的视频无效,比如: frameTime CMTime 1122 600ths of a second value CMTimeValue 1122timescale CMTi ...
- web container和spring container之间的关系
1 tomcat是一个web container,它提供java web应用的运行环境,因为它实现了好多java ee规范,比如java Servlet.JSP等,也就是说,没有它,java web应 ...
- Resharper 实现接口的方式
- C# 函数的传值与传址(转)
http://www.cnblogs.com/mdnx/archive/2012/09/04/2671060.html using System; using System.Collections.G ...
- POJ 2728 Desert King (最优比例生成树)
POJ2728 无向图中对每条边i 有两个权值wi 和vi 求一个生成树使得 (w1+w2+...wn-1)/(v1+v2+...+vn-1)最小. 采用二分答案mid的思想. 将边的权值改为 wi- ...
- 基于Spark的GBDT + LR模型实现
目录 基于Spark的GBDT + LR模型实现 数据预处理部分 GBDT模型部分(省略调参部分) GBDT与LR混合部分 基于Spark的GBDT + LR模型实现 测试数据来源http://arc ...
- goalng——time包学习
1.星期:type Weekday int const ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturda ...