
开源WebGIS
文章平均质量分 62
u013323965
这个作者很懒,什么都没留下…
展开
-
OpenLayer3的图层控件初步实现
在html中创建图层控件,以及新建该控件的样式 图层 #layerControl{自己定义}在script中var layer = new Array(); //记录图层var layerName = new Array(); //记录图层名var layerVisibility = new Array(); //记录可视性原创 2016-08-15 17:32:09 · 2247 阅读 · 0 评论 -
Openlayer自带熟知文本的转换
问题来源:之前在项目从数据库导入前台转换成feature时一直靠split、substring等各种愚蠢的方法,既慢又没有效率。问题解决:原来openlayer在format里自带有WKT的文本读取,省下不少时间反思:自己不重视API,常常想通过自身努力去解决问题,而人应该学会合理高效的运用工具,提高自己的工作效率,以后要正视问题,解决前想想有没有前人已经写好的方法。原创 2016-10-20 20:54:41 · 586 阅读 · 0 评论 -
geoserver样式浅析2
CssParameter:特点可叠加(如道路样式的设置)点基本属性线基本属性Stroke:边界stroke-width:线宽stroke-opacity:透明度stroke-linecap:线两端样式stroke-dasharray:虚线化stroke-dashoffset:虚线偏移量GraphicStroke:图片形边界,包含Graphic的功原创 2016-10-20 22:58:37 · 3388 阅读 · 0 评论 -
openlayer绘图时禁止移动地图的两种方式
问题来源出于防误操作的关系,我考虑到在地图绘制时禁止掉拖动地图的操作,在绘制结束才恢复回来。但直接用openlayer的Interaction的DragPan注册控件行不通,由此我实验得到以下两种方法。方法一:利用draw里的freehand模式核心就是多加入两个属性来限制draw的应用范围。new ol.interaction.Draw({ condition: ol.eve原创 2016-11-16 10:10:06 · 4415 阅读 · 2 评论 -
简易版谷歌系瓦片下载(天地图为例)
问题来源项目需要瓦片作为离线底图,所以便写个简易的方法。大神们可以在这个基础上改进。代码package tile;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.I原创 2016-11-14 00:33:30 · 5789 阅读 · 0 评论 -
利用MBTiles技术原理减轻离线地图的存储量
问题来源已切好的地图瓦片存放在文件系统中,会产生大量的文件碎片,占用空间会比实际容量大很多。原创 2016-11-18 14:05:09 · 5263 阅读 · 0 评论 -
安卓/java后台使用测量方法
问题来源在JS上很难进行全面而细致的交集运算,所以转到后台执行。同时JTS是优秀的拓扑运算开源组件,故本文使用JTS作为工具,而出于安卓考虑,使用了低版本的JTS。后台的方法核心就是WKTReader的读取,以及各类Geometry的应用。/** * 获取中心点 * @param wkt 熟知文本 * @return [x,y] * @throws ParseExc原创 2017-01-23 14:14:37 · 455 阅读 · 0 评论 -
Openlayer高阶样式使用
问题来源因需要要使用到可叠加的openlayer样式,所以在官网的demo中找到两个例子,并从中提炼出我所需的样式基础。Demo1这个例子通过style数组来实现叠加型,核心是多写一个用于点的样式并利用geometry属性来套用得到叠加效果。var styles = [ /* We are using two different styles for the pol原创 2017-02-22 16:46:05 · 2665 阅读 · 0 评论 -
天地图与谷歌的对比及偏移问题
问题来源在天地图官网发现遥感图跟自己的标注图层对不上,因此开始怀疑有偏移问题。这个图上很明显看到两个图层的道路对不上。但谷歌的底图跟天地图的标注结合的非常好,因此开始怀疑偏移问题。而且很明显的,请对比http://t0.tianditu.cn/img_c/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=im原创 2017-03-08 11:53:22 · 11236 阅读 · 3 评论 -
geoserver跨版本跨环境迁移
问题来源内容一致的geoserver需要部署在很多台服务器上,这时肯定不能每次都要重新设置一次吧,就考虑怎么把数据拷贝到新的geoserver里就行。如果是同一版本好解决,但不同版本呢?具体操作把数据缓存目录(默认是data_dir)下的工作空间内(workspaces)有关的内容(如图层、样式(样式版本不一样位置不一样,建议自行查找))迁移到新的geoserver里,比如下图,将整个原创 2017-04-09 22:44:29 · 2040 阅读 · 1 评论 -
geoserver发布切片影像地图
问题来源拿到一副经过校正后的影像后,怎么使用geoserver进行切片及发布呢。本人研究了一番在此给出答案。导入tiff影像这个就不说了,网上一大把教程,记得要带坐标系。进行切片这里要注意一个问题,如果打开TileLayers界面显示403,要记得去日志查看问题,及时调整,或者真的没问题时可选择重启一下,有时GWC容易抽风。第二个问题是,如果打开DiskQuota出现配置不原创 2017-05-03 15:45:13 · 15983 阅读 · 0 评论 -
openlayer实现仿各大地图的标注点触碰样式变换
关键经过反复的实验,成功的关键是利用select控件来改变样式,同时要注意避免因select的注册而锁住地图。代码记住要用styleFunction来写入样式,同时注意不能单独设置要素的样式,一旦设置无法再转换。var select = new ol.interaction.Select({ condition: function(evt) {原创 2016-11-02 22:53:02 · 5370 阅读 · 2 评论 -
Geowebcache瓦片的自更新
问题来源如果有一种图层,它的支撑数据是不断变化的,但使用wms加载太慢(gwc/service/wms也一样),影响体验,那么有没有办法,加载事先切好的瓦片,再自更新更换的部分?解决方式geoserver官网上提供的两种方式(guava是自带的,而另一种则需要使用社区封装好的依赖包),但两种都试过了,貌似都没有什么效果,也可能是我的方法不对,望大神指点原创 2017-05-09 17:37:17 · 1978 阅读 · 2 评论 -
geoserver切片出现HTTP ERROR 403解决
问题来源在geoserver的【Tile Layers】里打开切片页面时会出现403,大概如图所示。 但在jetty里全是???,看不到原因。所以也转到tomcat试过,发现可能是权限上的原因。 思考问题的产生既然是权限的问题,肯定跟账号有关系,由于我用的geoserver内置的root账户登陆,但在geoserver中没有记录,也就没有权限,所以打不开切片页面,如果再使用已注册的admin原创 2017-08-05 20:28:01 · 2200 阅读 · 0 评论 -
利用Geotools来转换影像的坐标系
背景若有一幅航拍的原始影像,需要自动产品化,那就必须要在后端进行坐标系的统一转换,这时用到开源的Geotools就很简单了。处理使用Operations类下的resample方法(重采样)可以解决这个问题,它的方法定义如下: Coverage org.geotools.coverage.processing.Operations.resample(Coverage source, Coordina...原创 2018-03-06 09:08:45 · 5649 阅读 · 4 评论 -
通过SLD_BODY动态改变geoserver的图层样式
目录要点使用取标准样式修改为自定义规则GetMap使用URL调用方式Openlayers调用方式GetLegendGraphic使用访问报错问题geoserver的WMS服务支持url参数上传sld_body来动态定义访问图层的样式,本文以GetMap以及GetLegendGraphic为例进行说明。要点一定要注意样式格式的正确性,样式不能有缩进,否...原创 2018-11-07 23:11:01 · 3453 阅读 · 0 评论 -
Sql的MakeValid与道格拉斯普克算法对比
Sql Server 的MakeValid用途主要用于对不符合地理实例的的空间对象或地理对象进行修正,有时会伴随着类型的变换。示例修改前WKT:POLYGON ((108.624008 22.121124, 108.624001 22.121117, 108.623993 22.121109, 108.623993 22.121098,108.623993 22.1原创 2016-11-07 20:14:30 · 729 阅读 · 0 评论 -
OpenLayer标注浅析
图层标注顾名思义,即是用添加矢量层来进行标注的显示。缺点是需要增加一个图层,在鹰眼上标注也会阻碍视野。 var beijing = ol.proj.fromLonLat([116.28,39.54]); //定义一个坐标点 //创建标注要素 var iconFeature = new ol.Feature({ //创建一个要素,作为标注 geometry:new ol.geom.P原创 2016-08-18 12:25:11 · 5128 阅读 · 0 评论 -
关于geoserver提取其他格式出现范围过小问题解决
问题如下:如图,在geoserver中显示如下但当使用格式提取KML文件时却发现只有部分生成解决方法:其实是WFS的默认设置读取的features太小,不足以读取完所有的要素,所以可以改成下图,在WFS中的features下改变数据的max结果发现,问题解决原创 2016-08-18 16:17:15 · 744 阅读 · 0 评论 -
openlayer实现图层控件功能
/** * 该文件用于添加图层控件功能 * @author Wilson.Yan * @version 2016.8.18 */function layerCtrl(map){ //在外部调用 //图层变动使用 var group = map.getLayers(); loadLayerControl(map,"layerTree");//第一次载入图层控件 group.on('原创 2016-08-18 16:55:00 · 2792 阅读 · 0 评论 -
利用java后台进行geoserver查询
使用后台的原因由于项目要求,之前的函数必须要拆开封装,但对于jsonp来说,回调函数一旦分开,就会有异步的问题(jsonp永远都是异步的,除非你将处理都放到回调中去)。所以考虑从前台传参到后台方法去处理,后台再通过url来进行写入。后台的主要实现方式/** * geoserver查询 * @param url 基地址 * @param layer 图层名原创 2016-09-13 08:23:08 · 4649 阅读 · 1 评论 -
关于Geoserver 环境搭建问题
特别要注意JRE对Geoserver的影响比如geoserver的2.9.1版本,用jre7来搭建并不能生成主页,一般出现404或503的错误。经过我的仔细排查发现改用jre8就可以登上主页。而旧版本的geoserver(如2.0.2)则可以使用jre5/6。建议虽然我本专业也是GIS的,但由于这些开源引擎尚属于新兴阶段,在国内很难找到靠谱的资料学习,建议想要学习的同学有条件的原创 2016-08-11 16:25:28 · 2454 阅读 · 0 评论 -
OpenLayer改变跳跃级别及压缩png来减少瓦片数据量
问题来源由于制作的瓦片数据量过大,我选择了偶数级才加载瓦片来减少数据量,但不幸的是,级别增长时奇数层瓦片也被读取,导致没有数据进入。跳跃级别的改变利用view中的zoomFactor来设置跳跃因子,例如我要做的就是设为4(默认是2),但要注意的是这个要配合最大分辨率及最小分辨率使用,例如:view:new ol.View({ projection: new ol.proj.P原创 2016-08-24 14:12:56 · 964 阅读 · 0 评论 -
关于postGIS没有template_postgis模版的问题解决
template_postgis模版是创建空间数据库的必要手段,没有这个模版没办法导入shp文件。解决办法:打开psql(用开始菜单中搜索即可搜到,或者进入pgAdmin的插件菜单下的psql console)进入数据库后,使用下列语句创建数据库(此时还是普通数据库) create database xx;转到你新建的xx数据库中:\c xx;然后输入官网给的这几条添加扩展语句(原创 2016-08-12 15:28:34 · 6473 阅读 · 3 评论 -
openlayer3加载geoserver发布的WFS服务
问题来源openlayer3加载WFS存在跨域问题,需要用jsonp解决,而jsonp需要用script加载,但加载有误,如图所示,读取cite:bou2_4p图层的GeoJSON载入地址是这样的http://localhost:8080/geoserver/cite/ows?service=WFS&version=1.0.0&request=GetFeature&typeName原创 2016-09-06 14:10:20 · 8010 阅读 · 7 评论 -
geoserver样式浅析1
样式的结构<StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"原创 2016-08-15 10:11:23 · 2099 阅读 · 0 评论 -
OpenLayer3读取Geoserver切割的离线瓦片
前言:由于在网上搜索了很久都没有找到相关的东西,只能自己埋头研究,本文我付出了整整40个小时的心血来解读,希望大家若要转载一定要注上作者名及地址。Geoserver的离线瓦片生成主要的功能全在Tile Caching上,要注意的是,必须先设置好你所要的图层的坐标系。在Gridsets下选择/新建一个坐标系分割模版,计算好范围后,选择add zoom level,添加完毕后保原创 2016-08-21 17:48:36 · 7739 阅读 · 4 评论 -
Geoserver的Style当字段为中文时该如何过滤
问题来源用udig生成的sld文件,导入到geoserver中仍有乱码产生,它能通过检查,而直接用这些乱码去显示,则会变成下载wms文件。(带?的地方就是问题) Default Styler 1原创 2016-10-09 16:25:59 · 2472 阅读 · 0 评论 -
SQLserver空间数据的保存及编辑(以Polygon为例)
注意SQLServer 所用的Geometry一般的开发语言并不包含,所以需要转化,如图,最简便的转化是用Polygon包含。SQL语句//插入语句(编辑语句应该不用给出了)INSERT INTO table_name (polygon,...) VALUES (POLYGON((X1 Y1,X2 Y2,X3 Y3,X1 Y1)),....)//从表中读出空间数据支持传到程原创 2016-09-20 17:40:03 · 3951 阅读 · 0 评论 -
openlayer的测量面积公式的改进
问题来源:首先要注意到Polygon内可能含有内部线性环,所以在计算时需要减去环的面积,同时也会有MultiPolygon的存在。所以对之前的公式进行修改。公式代码: /** * Format area output. * @param {ol.geom.Polygon} polygon The polygon.原创 2016-10-21 17:03:50 · 2312 阅读 · 0 评论 -
OpenLayer3的getArea()及getLenth()方法解析
问题来源:为什么方法返回的数据不带单位?通过在官网的measures例子发现,这种方法得到的值是没有意义的值,必须要通过设定好球体,才能得到相应的面积/长度。改良版代码适用于坐标系为4326的格式转换,若不是4326坐标系,就要自行参照官网的例子转换。(建议可以浏览ol.Sphere,只有两个函数) /** * Format length outpu原创 2016-09-29 14:41:52 · 4189 阅读 · 0 评论 -
Openlayers利用原生Canvas绘制闪烁样式
背景项目需要地图上实现不断报警的闪烁样式,之前是通过Overlay来处理的,但Overlay遮挡要素,无法很好的触发事件,所以就转而使用Canvas原生实现。过程主要参考:openlayers4中闪烁点的实现、canvas-flashMarker-RunJS。改造原flashMarker的使用原本的做法是通过构造新的对象new FlashMarker(map, citys),每次构...原创 2019-03-07 21:04:53 · 2159 阅读 · 2 评论