(转)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字 ...
随机推荐
- Java之旅hibernate(2)——文件夹结构
Hibernate的jar最好是到官网上进行下载.下载最新的稳定的版本号.之后进行解压,以下我们介绍一下hibernate的包结构. 1. 包结构 我们能够看到包文件夹结构发生了变化.我以5 ...
- Binary Tree Maximum Path Sum 自底向上求解(重重重重)
题目: 链接 解答: 自底向上求解.left_max right_max分别返回了左右子树的最大路径和,假设左右子树最大路径和小于0.那么返回零. 用这个最大路径和和根节点的值相加.来更新最大值,同一 ...
- 我在CSDN开通博客啦!
今天,我最终在CSDN开通博客啦!
- Maven手工安装jar包到本地仓库
使用maven,少不了的就是要被"包下载失败"这种问题折腾. jar包下载失败后.我们选择手工把jar下载下来.(能够下载到指定jar的途经非常多) 以下随便找了一个jar包为例. ...
- hdu 1258 Sum It Up (dfs+路径记录)
pid=1258">Sum It Up Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- 李洪强iOS开发之动态获取UILabel的bounds
李洪强iOS开发之动态获取UILabel的bounds 在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法. 1.获取宽度,获取字符串不折行单行显示时所需 ...
- python 【目录】
python[目录] python[第一篇]初识python python[第二篇]python基本数据类型 python[第三篇]python函数基础
- FreeRTOS系列第14篇---FreeRTOS任务通知
注:本文介绍任务通知的基础知识,具体源代码分析见<FreeRTOS高级篇8---FreeRTOS任务通知分析> 每一个RTOS任务都有一个32位的通知值,任务创建时,这个值被初始化为0.R ...
- leetcode第一刷_Search in Rotated Sorted Array
旋转数组的查找问题.从头開始扫一遍.O(N)的复杂度,一般也能过,甚至先排序下面,再二分都能过.只是这道题的目的当然不在于此. 想一下旋转之后对我们的查找产生了什么影响.假设没旋转过,我们直接比較ta ...
- 使用逆向工程生成mybatis的Mapper文件
之前有写过一篇博客: 使用MyBatis Generator自动生成MyBatis的代码链接:http://www.cnblogs.com/klslb/p/6908535.html 这个太麻烦了,而且 ...