GIS

OpenLayers 3

OpenLayers 3 动态更新 VectorLayer 中的数据

通过一个小例子,展示如何改变 VectorLayer 中的要素,并刷新地图。 源代码:qianyanseu/openlayers3-vectorlayer-source-update 关键代码 在 OpenLayers 3 中,更新矢量图层中的内容,可通过修改该图层的 DataSource 来实现。 下面这段代码实现了每5秒更新一次数据。更新时,首先将现有的要素集清空,再批量将获取到的要素集添加到图层中。对 addFeatures() 的调用会自动触发 changed 事件,导致图层重绘,因次不需要再专门调用地图重绘的方法。 var refreshInteval = 5000; // refresh every 5 seconds setTimeout(updateFeaturesForVectorLayer, refreshInteval); function updateFeaturesForVectorLayer(){ $.ajax({ type : "POST",

By Jon

GIS

Turf.js 功能概览

Mapbox 是一个总能带来惊喜的公司,来自他们的新年礼物是一个全新的 JavaScript 空间分析库:Turf。 Our assault on traditional GIS begins now. -- @Mapbox 浏览器端 JavaScript 空间分析 Mapbox 在博客中称,Turf 实现了常用的空间分析操作,例如生成缓冲区、计算等高线,建立 TIN 等等。以往只属于桌面 GIS 的分析功能,已经可以在浏览器中使用。 Turf 使用 JavaScript 编写,通过 npm 进行包管理。良好的模块化设计使得 Turf 不仅可用于浏览器端,还可以通过 Node.js 在服务器端使用。(感受到了 Node.js 社区一直提倡的前端后台一体化) Turf

By Jon

GIS

Tilemill + PostGIS + Mapnik 获得自定义样式的 OSM 地图切片

注:OSM 默认数据集中的国家和地区并不正确,需要注意辨别改正。 最近的项目需要用OpenStreetMap数据生成一个自定义样式的切片底图,尝试了一段时间,发现可以用 Tilemill 读取数据并生成地图样式,再用 Mapnik 进行地图切片。切片制作使用 Windows 平台,用到的工具有: * python 2.7 * Tilemill * PostgreSQL 9.3 + PostGIS 2.1 * Mapnik 2.2 * generate_tiles.py 脚本(可以从 OSM Mapnik SVN下载) 下载 OSM 数据并导入到 PostGIS 从 bbbike 选择下载某个区域的 OSM 数据,或者直接从metro extracts下载整个国家的数据。 新建一个 PostGIS

By Jon

GIS

GeoServer 发布大型影像数据

手头有一个 8.7GB 的 GeoTiff 高清航空影像,需要用 GeoServer 发布成地图服务。使用默认的 GeoTiff 方式时,WMS服务效率非常低,已经影响正常使用。为了改善地图服务的效率,可以为影像建立金字塔,再通过 GeoServer 的 Image Pyramid 扩展来发布。 用 FWTools 建立影像金字塔 首先,下载 FWTools 并安装。安装完成后需要修改 bin 目录下的gdal_retile.py(Windows 版),用编辑器打开bin/gdal_retile.py,把第273行修改成: print("Building internal Index for %d tile(s)

By Jon

GIS

OpenLayers 3 加载 Mapbox 图层

Mapbox上有世界上最好的地图。OpenLayers 3 是世界上第二好的地图API(第一是 Leaflet.js)。用 mapbox.com 提供的 Tiles 、TileJSON 服务,可以将用户自己创建的地图加载到 OpenLayers 3 地图控件中。 使用 Mapbox 地图服务之前,需要弄清楚 Mapbox 的 Map ID 和 Access Token。Map ID 是地图标志号,格式是[account].[handle],其中 account 为用户名,handle 则表示该账号下的某个地图项目。mapbox.com 上的每个地图项目都有惟一的 Map ID,可以在项目属性中查看。而 Access Token 则是与账号相关联的一串“

By Jon