(转)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字 ...
随机推荐
- python批量删除文件
敲代码測试时总会碰到要删除日志目录下的日志或者删除一些历史文件.每次都会生成,再測试的时候为了查找错误原因方便总是要在測试前删除这些文件.手动删除比較麻烦.所以写一个批量删除脚本 import os ...
- asm volatile ("B .")
在开发中,我们常常会有有这种需求,就是在某段代码处開始,一步一步往下跟踪调试,有人说加个while(1)循环,事实上这个循环增加后,其后边的代码就会被优化掉,达不到我们的目的,更好的办法是在须要的地方 ...
- Android之——多线程下载演示样例
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46883927 一.概述 说到Android中的文件下载.Android API中明 ...
- 编译自己的gcc
1 编译gcc需要的依赖 gmp mpfr mpc isl binutils 将它们都安装在同一个目录下即可. 2 --disable-nls 将native language support关掉,只 ...
- Kentico中的skin.css的加载
kentico7中有如下的css引用 第一行的css是 SELECT * FROM dbo.CMS_CssStylesheet表中的css 后面2个对应到的是Kentico7\App_Themes\ ...
- POJ 2562:Primary Arithmetic
Primary Arithmetic Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11135 Accepted: 40 ...
- HDU 1379:DNA Sorting
DNA Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- go语言---for range
学习-go语言坑之for range https://www.cnblogs.com/hetonghai/p/6718250.html go只提供了一种循环方式,即for循环,在使用时可以像c那样使用 ...
- POJ1228 Grandpa's Estate 稳定凸包
POJ1228 转自http://www.cnblogs.com/xdruid/archive/2012/06/20/2555536.html 这道题算是很好的一道凸包的题吧,做完后会加深对凸包的 ...
- Rails5 Model Document
创建: 2017/06/09 更新: 2017/06/21 更新: 2017/06/23 对待未完成的追加# TODO: 更新: 2017/06/29 修正文件名db/seed.rb ---> ...