gis
文章平均质量分 54
左直拳
程序猿
展开
-
react使用OpenLayers实现类似船某网在地图放大时展示具体船舶符号缩小时显示聚合小点效果
如图所示,地图缩小(即比例尺放大)时,显示聚合小绿点;原创 2024-06-19 19:52:41 · 600 阅读 · 6 评论 -
cesium按照参数绘制不同形状的船舶
俺们公司之前有个自创的所谓前端GIS框架,是用Cesium搞的。我对该框架不熟悉,用它在地图上作画,画船舶符号,看以前的代码,感觉十分艰深晦涩,什么材质、纹理,令人头大如斗。我4年前用过一阵Cesium,后来荒废了,到现在已经完全失忆。原创 2024-06-18 21:30:45 · 691 阅读 · 0 评论 -
GeoWave
GeoWave是一个开源库,它将数据从分布式数据库摄取进来,以键值对的形式存储,并建立多维度索引,然后提供给GeoServer等外部应用。经过GeoWave的针对性处理,分布式数据库中的数据能够为地理空间信息软件所用,并具有良好的性能。可见GeoWave是一种中间件,将分布式计算框架与现代地理空间软件连接起来,在二者之间架起一道桥梁,提供存储、检索和分析海量的地理空间数据集的服务,就好像PostGIS为PostgreSQL所做的工作一样。原创 2023-03-18 23:17:00 · 882 阅读 · 0 评论 -
arcgis for js 4.X自定义气泡点击地图对象弹出对话框
题目的意思是,arcgis for js 4.X自定义气泡,点击地图对象弹出对话框,而不是弹出气泡。对话框是vue页面组成的自定义对话框,不是地图页面的对象。原创 2022-12-07 22:32:50 · 1407 阅读 · 0 评论 -
dojo中的类
使用arcgis api for js 4.*进行地图的web前端开发,就不得不与dojo打交道。dojo是一个框架,自成体系,比如它对类的支持,有自己的一套,有些地方甚至十分奇特。因为前端要用到arcgis api for js,依赖dojo,了解即可,不作深究。原创 2022-12-04 14:19:40 · 404 阅读 · 0 评论 -
arcgis for js中的extent
首先extent是一个有关地图底图的属性;其次extent是对全图的一个裁剪。原创 2022-12-03 12:20:30 · 267 阅读 · 0 评论 -
arcgis for js 4.X 鼠标悬停弹出气泡
主要通过MapView的事件监控,使用MapView中的Popup对象来完成。在arcgis for js 4.X中,要实现这个效果,主要通过MapView的事件监控,监控到鼠标悬停,检索相关图层,然后使用MapView中的Popup对象,调用其open方法来完成。1、先看效果2、代码总体结构/* 创建一个图形图层,鼠标停在该图层上的对象时,弹出气泡*/ //创建图形图层let gl = getLayer(datas)//设置事件监听setEvent(gl)//将图形图层加入地原创 2021-10-28 18:41:08 · 1665 阅读 · 1 评论 -
arcgis for js 3.X 使用4490坐标系加载天地图
我以往使用arcgis for js 3.19加载天地图,使用的都是默认的坐标系:4326。现在因为客户提供的地图,都是4490的,没办法,只能全部使用4490,否则不同坐标系的图层,没办法叠在一起。4490是CGCS2000坐标系的WKID,4326是WGS84的WKID。有关它们的区别与联系,请阅读尾部的参考文章。有说法称,4490比4326更适合我们多一些。以下是加载天地图的完整代码,写成了arcgis插件的形式:define(["dojo/_base/declare","esri/layers原创 2021-04-13 19:31:53 · 4918 阅读 · 0 评论 -
地理信息云服务
有大佬雄心勃勃,准备打造一个地理信息平台,作为基础服务,支撑各种应用。其中一项指标,是要能经得起一定量的并发访问。这是自然,基础服务嘛。高并发的套路,如前所学,无非就是异步机制、负载均衡、缓存、分布式数据库之类。地图服务没有什么来自于用户的数据写入,主要是读取,异步机制估计用不上;但消息队列还是要的,可以起到削峰的作用。地图服务是无状态的,伸缩性相对比较好处理,但也有可能在多集群甚至单集群中,不同机器提供的服务,存储的数据不一样,所以负载均衡算法要依据情况而定。缓存对于地图来说,就是切片。切片文件应原创 2021-02-24 15:19:52 · 606 阅读 · 0 评论 -
arcgis图层按日期字段查找
要查找arcgis图层,这个query该如何写,是件麻烦事。比如说,用日期字段来查找。该怎么写呢?可以这样写:<DateField> = DATE 'YYYY-MM-DD'<DateField> = TIMESTAMP 'YYYY-MM-DD HH:MI:SS'1)以日期为尺度code='WZ2' and SURVEYDATE>=DATE '2018-01-01' and SURVEYDATE<DATE '2019-01-01'2)以日期 + 时间为尺度原创 2021-01-13 17:07:56 · 1574 阅读 · 0 评论 -
oracle 12c设置st_shapelib.dll后报ORA-28595: Extproc 代理: DLL 路径无效错误问题
安装一台服务器,JAVA、oracle 、arcgis,按部就班,照单抓药,一条龙服务。但arcgis是10.6的,好高级,没用过,有点儿紧张。就测试了一下 oracle 对空间数据的支持,发现不行。当然不行,要设置sde表空间的libralies,将st_shapelib.dll指向正确的问题:首先,从arcgis的安装目录找到st_shapelib.dll,然后修改oracle,指向它。运行语句测试,失败select sde.ST_AsText(SDE.ST_Geometry('POINT (1原创 2020-11-25 11:35:14 · 563 阅读 · 0 评论 -
arcgis连接oracle问题
制作地图服务的同事进开发服务器上部署,按照他们之前的指引,按部就班,设置了环境变量path,tns_admin,又设置了oracle免安装客户端的tnsnames.ora,结果arcgis catalog 还是连不上数据库,总提示连接串不对,说无法解释。这个开发服务器简直是我的宝贝,别人猛搞一通俺不乐意;同时因为根深蒂固的鄙视链,我认为开发之外的人员都是色拉。所以我出马了。没想到露怯了,搞了一通,时间还挺长,原以为摧枯拉朽。觉得同事给我的信息,让我学到了新的东西,受益匪浅。三人行必有我师姐焉。总结如下:原创 2020-10-29 18:09:21 · 541 阅读 · 0 评论 -
Cesium里面的气泡
平面GIS中,点击地图出气泡是非常普遍的操作。三维地图框架Cesium里面,当然也支持,只不过样式和内容不一定符合我们要求就是了。Cesium是默认支持弹出气泡的,只要在初始化时不明确将infoBox置为false,点击地图都会弹出气泡:var viewer = new Cesium.Viewer("cesiumViewer",{ imageryProvider : new Cesium.ArcGisMapServerImageryProvider({ url:"http://map.geoq.原创 2020-09-17 18:58:07 · 4027 阅读 · 8 评论 -
cesium 相机跟随
一场大的台风路径通常很长,可能从靠近赤道的太平洋一直往北吹到东三省。跨度这么大,在三维GIS中,往往不容易看全。如果能够实现相机随动效果,即相机跟随台风步进、移动,就生动许多了。感觉在cesium中,坐标和视角、相机、viewer是一个难点,我到现在都搞不清楚。方向(orientation)可以总结一下:XYZ轴,由负到正,分别对应西东、南北、下上。heading:视场角,观察者(相机?)与地球围绕Y轴转,可以想象为相机向左,地球就向右;反之。pitch:俯仰角,观察者与地球围绕X轴转;观察者原创 2020-08-31 19:05:14 · 3735 阅读 · 2 评论 -
arcgis for js 3.X绘制雷达扫描效果
思路:1、雷达刻度比较复杂,可以预先发布成图层,绘制时再调出来2、雷达扫描效果,可由多条半径组成一个扇形3、半径线条由起始角度(扫描方向中居于前)到截止角度,逐渐透明4、利用定时器定期刷新,角度向前递增,绘制前先清除上一步骤的绘制结果代码:var _lines = [];//线条存储器var _sAngle = 0,_eAngle = 0;//起始角度。开始都为0var _timer; function go(lon,lat){ var layer = getLayer("rada.原创 2020-08-25 18:48:41 · 1427 阅读 · 2 评论 -
cesium初始化
洒家接触cesium不久,从现在开始要陆续记录下心得。年纪大了,脑细胞成片成片地死亡,快成S逼了。一般来说,我们应用个什么东西,都不会老老实实地采用默认值,一定会折腾一下才过瘾。那么,cesium怎么初始化呢?我是这样的:let defaultAccessToken = "";Cesium.Ion.defaultAccessToken = defaultAccessToken;var viewer = new Cesium.Viewer("cesiumViewer",{ imageryProvid原创 2020-08-08 12:59:59 · 2222 阅读 · 0 评论 -
cesium模拟火箭发射
效果及过程如下倒计时点火腾空而起变换视角变换视角 + 旋转我们的目标是星辰大海通过这个效果,可以了解到以下知识点:1、加载模型2、控制视角3、烟雾效果4、路径代码要点1、总体结构2、调用require(['rocket'],function(Rocket){ //viewer = var viewer = new Cesium.Viewer("cesiumViewer",.... var rocket = new Rocket(viewer,Cesium,".原创 2020-08-08 12:21:28 · 2888 阅读 · 0 评论 -
cesium张贴卫星云图离地30万米形成戴森球效果
在平面GIS开发中,有时会装下逼,在地图上贴一张卫星云图作为二维生物,没有高度的概念,卫星云图与下面的地图融为一体,没有高下之分。但在三维GIS中,如果贴个卫星云图,还紧紧地贴在地面上,仿佛膏药似的,就体现不出立体的优势了。当然啦,云层应该就是离地面不到万米而已,贴上去,也看不出什么垂直高度。但为了看出效果,不妨夸张一点,让卫星云图漂浮在地球上面的太空,形成戴森球。这样才过瘾。楚帮场,丁炸桥,孔过瘾。怎么弄呢?思路是这样的:1、构造一个矩形图元(Cesium.Primitive),此图元范原创 2020-07-30 14:45:12 · 2342 阅读 · 7 评论 -
cesium初接触:Hello World
潮流用cesium,咱们开始吧。跑到官网上下载源代码,却不知道怎么处理。原来,真的是源代码啊。据说cesium是一个for 3d的js框架,我以为就是一些JS,顶多配置一下,就能挂在web服务器上跑了。但是cesium源代码需要编译。为什么要编译呢?我估计原因是,cesium的源代码并不是标准的JS和CSS写就,比如js用coffescript,css则是scss或者ecss之类,而且写的时候分了模块,然后编译的时候需要转换,以及构建。闲话休提,上步骤:1、编译需要npm,机器没装的话需要装一个,原创 2020-07-06 19:12:09 · 910 阅读 · 0 评论 -
arcgis for js 3.x 绘制海流
如图所示箭头方向代表海流方向,箭头大小代表流速大小。其中海流方向以正北方向为0度,顺时针起算。但如果是风场就不一样。风的方向与我们的普遍认知刚好相反,箭头指向来风的方向。想想也有道理,我们常说喝西北风,是吹向西北方向的风还是从大西北刮过来的风?当然是从大西北过来的啊。每当我们肚子饿得受不了的时候,就可以跑到外面,迎着西北方向张大嘴巴可矣。有分教:言归正传,本文例子,根据雷达测量的海流数据绘制,数据包括经纬度、流向、流速4个数值。绘制思路:1、用SimpleMarkerSymbol 结合 svg原创 2020-06-17 18:05:17 · 1050 阅读 · 0 评论 -
java用geotools类库读取shapefile
前文再续,书接上一回:java读取shapefile且用arcgis for js展示java怎么读取shapefile呢?shapefile是esri公司最先搞出来的,那么arcgis应该是有相关的类库的吧?好像找不到?我问过搞移动端的同事,arcgis for android确有处理shapefile的类库,处理起来易如反掌。但是,在WEB系统,服务器端从shapefile读出数据,最终是要在前端浏览器中展示,像我们目前在建的项目,就是要用arcgis for js来展示这些数据,而安卓系统类似CS原创 2020-06-12 19:02:23 · 1660 阅读 · 10 评论 -
GIS开发扫盲贴--地理坐标系
GIS开发,可能最基础的,就是要搞懂坐标系了。所谓GIS开发,无非就是处理一堆空间数据,即存储空间信息的数据。空间信息也者,经度纬度,高程之类。但是,地点就是那个地点,然后量度的方法、标准却多种多样,形成不同的所谓坐标系。地理坐标系的分类与阐述,在百度百科里搞得很复杂,阅读之后,只会让人...原创 2020-06-10 19:48:34 · 2657 阅读 · 0 评论 -
java读取shapefile且用arcgis for js展示
如题,java读取shapefile文件内容,输出到前端,用arcgis for js进行展示。循例一言不合就发图,来个感性认识。shapefile是一种空间数据文件。它是美国esri公司制定的一种文件格式。事实上,shapefile通常不会是一个文件,而是一堆名字相同,只是后缀名不同的文件,它们组合在一起,对同一个地理对象进行不同角度的描述,形成一个完整的小空间数据库。所以,有些软件处理shapefile,要求提交的是这些文件的打包,比如zip。以上文件负责的功能各有不同:.shp 存储地理形状原创 2020-05-30 12:19:28 · 1431 阅读 · 0 评论 -
arcgis for js 3.X利用symbol设置svgpath绘制符号
如题所示,arcgis for js利用symbol设置svgpath绘制符号。先贴出绘制结果,有个感性认识:图中三角形、箭头形,以及里面带圆形的,都是通过设置symbol.svgpath进行绘制的。摘要代码如下:var _cbg = new Color([255, 255, 255, 0.9]);//填充颜色var _cbd = new Color([0, 0, 255, 1]);//边线颜色function ship(attr) {//绘制,返回graphic对象 var symbo原创 2020-05-30 10:48:28 · 1323 阅读 · 0 评论 -
地图切片
以下内容纯粹个人理解。地图切片,就是地图服务器将地图预先绘制成图片,存起来,遇到请求,直接返回图片。好处不言而喻,节省了绘制的时间,速度快了,也减轻了服务器的压力。其实地图很多时候返回的都是图片。比如说,前端用加载动态图层(ArcGISDynamicMapServiceLayer)方式加载arcgis图层,arcgis返回的就是图片;如果是加载要素图层(FeatureLayer),则返回数据,客户端再绘制。不过它这个切片有讲究。切片就是切成一张张图片,每张图片是一块,称为“瓦片”。一幅地图就就由多张原创 2020-05-27 19:21:53 · 2649 阅读 · 0 评论 -
ORACLE 操作空间字段 报ORA-29877/ORA-29875错误的处理
oracle里,对用arcgis创建的空间字段进行赋值,update SDE.PE_BASE set SHAPE=sde.ST_PointFromText('point(118.25 103.21)',0) where objectid=203;报错:ORA-29877: 无法执行 ODCIINDEXUPDATE 例行程序ORA-20085: Insert Spatial Referen...原创 2019-03-15 18:14:50 · 4261 阅读 · 0 评论 -
arcgis for jsapi中图层数据的主键
从地图服务里拿到的图层数据,每条记录都有一个主键,名曰“ObjectID”。原创 2019-03-13 18:51:26 · 469 阅读 · 0 评论 -
arcgis for js 3.X通用百变气泡解决方案
题目宏大又拗口。没办法,我水平提升了,写文章的境界也应一起提升。所谓的提升,就是包装,要能唬得住人。比如方法总结要说成解决方案,不能扭扭捏捏,期期艾艾地说什么“心得一例”之类,太小家子气了。就是解决方案,问你怕未。话说,arcgis for js api里面,点击地图对象,弹出气泡(InfoWindow),这是标配。这个气泡,可以设置大小,显示图形属性,等等。一般来说这就够用了。但假如想显示些...原创 2019-07-27 15:42:57 · 1129 阅读 · 1 评论 -
arcgis for js 3.X 空气泡问题
前端展示地图,点击里面的对象,弹出气泡是标配。问题是,现在点击空白的地方也会弹出气泡,气泡里啥都没有,只有一句冷冰冰的句子:“无任何可用信息”。既然是无任何可用信息,那你还弹出来干什么?搞笑啊。怎么去掉?require([ "esri/map", "dijit/TooltipDialog", "dijit/popup", "esr...原创 2019-08-09 17:59:07 · 567 阅读 · 1 评论 -
求两个球面坐标点(经纬度)之间的距离
这是有公式的,照算可也:其中R是球体半径,arccos,反余弦。记得经纬度要转成弧度才好计算。function getOffset(p,p0){//计算p和p0之间的距离 //x:经度 y:纬度 let x = getRadian(p.x);//经度转为弧度 let y = getRadian(p.y); let x0 = getRadian(p0.x); ...原创 2019-09-07 18:34:35 · 2512 阅读 · 0 评论 -
arcgis for js 3.19从图层中读取和统计数据
arcgis for js 3.19里面,从图层中读取和统计数据,主要使用 query、query task、StatisticDefinition。query和task是什么关系?二者有什么区别?按我的理解,query负责定义查询语句、选项等等,相当于SQL语句;而task是查询引擎,负责将query付诸实施;StatisticDefinition好理解,就是统计。上代码:自定义查询控件q...原创 2019-09-16 11:19:20 · 660 阅读 · 0 评论 -
arcgis 图层概念
arcgis有图层的概念。图层好好几种,什么切片图层、动态图层、图形图层、影像图层;还有 for google的KML图层。 ArcGISTiledMapServiceLayer 切片图层 ArcGISDynamicMapServiceLayer 动态图层 GraphicsLayer 图形图层 FeatureLayer 要素图层切片图层就是静态图层,服务器可原创 2017-05-08 17:57:00 · 4307 阅读 · 1 评论 -
arcgis for js 3.X 隐藏或显示底图
arcgis for javascript展示地图的时候,有图层的概念,一层一层的,类似photoshop,在应用界面上控制图层的显隐,是极常见的功能。但是,如果是控制底图的显示或隐藏呢,怎么搞?网上找不到满意的答案。中文的一篇类似答案都没有,英文的都是说new Map的时候,别指定底图,然后再采用add Layer的办法添加上去。我明白,add Layer的时候,可以获得这个layer对象,然后对原创 2017-04-25 17:01:13 · 4329 阅读 · 3 评论 -
arcgis for js 3.X 修改featurelayer的graphic
featurelayer,要素图层/属性图层,里面充满了一个个的graphic对象。咱们可以在客户端构建一个featurelayer(featurelayer是graphicslayer的子类),然后在上面任意作画。画的图形一多,就会有性能的问题。据说这是arcgis for jsapi3的专利,最多只能支持几千个graphic,而且渲染的速度还很慢;4的话就好很多了,用webgl绘制,贼快;据...原创 2019-03-04 19:05:15 · 2101 阅读 · 1 评论 -
arcgis for js 开发:坐标系、经纬度与平面坐标的互换
练武不练功,到老一场空。学习GIS开发,坐标系是绕不过去的,此乃基本概念,一定要搞清楚。某从事WEB GIS开发差不多2年,一直对这个坐标系感到模糊。这两天因为求解一个问题,方始有点认知。GIS世界里,坐标系有很多,而且描述得十分抽象,让我们这些没有天赋,缺乏空间想象力的傻叉晕头转向。不过,对于arcgis for jsapi开发人员来说,经常接触的大概只有2种坐标系:一、4326地理坐标系...原创 2019-03-04 18:09:19 · 10692 阅读 · 6 评论 -
Skyline画多边形,标图标,点击弹对话框
在SkyLine里面,画一个多边形,然后点击这个多边形,弹出一个提示框,显示该多边形的相关信息,咋写呢?步骤: 1、在地图上画多边形,数据无非就是一些点,比二维多了一个高度的坐标 2、在该多边形上面标上一个图标,比如一张水滴图标 3、将该多边形绑定定一个消息框具体上代码:1、画多边形var cVerticesArray = [ -122.415025, 37.7605原创 2017-10-30 19:29:45 · 2198 阅读 · 5 评论 -
skyline里显示图层,点击弹出气泡
skyline里加载图层,点击图层对象,弹出相关气泡,其实挺简单的。步骤: 显示图层 绑定弹出框1、显示图层skyline与arcgis不同,arcgis是要用脚本从地图服务里加载,才能拥有并显示图层;而skyline里面,图层需要一早做好放在三维文件(*.fly)里,然后我们可以通过文件内部的所谓路径(类似XML的xpath)来获得某图层,进行操作。 另外,我们飞行文件时,默认里面所原创 2017-11-07 20:20:26 · 2510 阅读 · 8 评论 -
三维软件Skyline开发初步
三维软件Skyline做出来的东西有点炫,挺高大上的样子。那么for web的二次开发是啥门道呢?其实,就是一个ActiveX控件而已。所以,skyline for web的开发,首先浏览器端要安装一个skyline的软件Skyline TerraExplorer Pro;所以,只能在IE上运行,chrome是不行的。官网上也声称有个啥for web的软件,可以支持谷歌、火狐等主流,但暂时没找到。因...原创 2017-10-11 19:43:58 · 5112 阅读 · 0 评论 -
arcgis for js 3.X 弹出气泡
arcgis里面,弹出气泡是很基本的操作。我目前知道的气泡方式,有2种。一、点击地理对象,出气泡这个是arcgis的固有功能,并不需要我们写什么代码。只须在加载图层时,指定一个模板参数:infoTemplate。fl = new FeatureLayer(param.nodePath, { id: param.id + "", mode: FeatureLayer.MODE_ONDE原创 2017-10-18 18:52:56 · 4106 阅读 · 1 评论 -
FeatureLayer.MODE_SNAPSHOT限制数量问题
我在加载FeatureLayer的时候,采用MODE_SNAPSHOT模式,发现有的图层少了一些数据,改回MODE_ONDEMAND又正常。究其原因,MODE_SNAPSHOT 是一次性将数据从服务器获取到客户端,之后的操作就不用再到服务器请求了。快照嘛,不就是这么个意思吗。但是,服务器对这种模式有一个限制,限制返回的数量,比如只能返回500条记录。这个限制数量可以在服务器进行设置。想想也有道理,如原创 2017-04-27 11:34:29 · 2280 阅读 · 0 评论