Author Archives: barry.z

Esri wkt字符串转proj.4 字符串的方法

s

使用gdal/ogr库进行转换 import os import sys import string import osgeo.osr prjfile=’~/proj4.prj’ srs.SetFromUserInput(prjfile) srs.MorphFromESRI() proj4 = srs.ExportToProj4() print proj4

esri Leave a comment

GeoMesa架构

s

GeoMesa架构 GeoMesa支持多种可扩展的、基于云端的数据存储架构,包括Apache Accumulo, Apache HBased,Google Cloud Bigtable以及用于流计算的Apache Kafka 。同时GeoMesa还可以和Apache Storm一起处理流数据,并使用Spark进行空间分析。 GeoMesa架构如图1: GeoMesa和GeoServer GeoMesa以GeoServer插件的形式为GeoServer提供了读取GeoMesa表的功能。在GeoServer中,GeoMesa表作为一种数据源存在,通过GeoServer,用户可以通过WMS/WFS的形式访问GeoMesa的数据。 GeoMesa表作为数据源,如图2: 与GeoMesa集成 为了方便用户使用GeoMesa中存储的数据,GeoMesa通过实现GeoTools接口,提供了使用OGC标准服务接口访问数据的能力,实现的OGC标准有: Web Feature Service (WFS) Web Mapping Service (WMS) Web Processing Service (WPS) Web Coverage Service (WCS) GeoMesa提供了多种导入数据的方式,包括GeoMesa命令行工具,Hadoop的map-reduce作业以及Apache Storm的实时数据流,如图3: GeoMesa的查询流程图如图4,通过GeoMesa API或GeoTools API,查询操作从Accumulo中数据读出: 键值对存储和Z曲线 GeoMesa的数据存储使用 key-value数据库。key-value数据库是一种NoSQL数据库,其数据按照键值对的形式进行组织、索引和存储。 Accumulo,HBase和Google Cloud Bigtable对这些键进行排序,并可将它们存储在任意数量的节点(服务器)上。 当使用key-value数据库时,Key的良好设计可以使应用程序更高效的运行。与关系数据库不同的是,key-value数据库中会频繁的使用key进行查询。例如在订单数据库中,会以订单号作为key进行存储,当用户查询订单的时候,即可用通过订单号直接查询到订单数据并返回该条数据。Accumulo,HBase和Cloud Bigtable都是使用类似的机制进行工作,GeoMesa同样也是使用该机制来进行数据组织。GeoMesa根据时空数据的特点,实现了生成包含时空信息的Key的算法,算法的基本思想如图5: 图中的红线被称为空间填充曲线,又称为Z曲线。该线顺序访问每个单元格一次,并且能够保证访问次序的唯一性。 Z曲线也能用于高分辨率地图,如图6: Z曲线上的每个点都可以赋予一个顺序值,通过这个顺序值,GeoMesa将经纬度表示为一个整数,这样就将二维数据降为一维数据,可以作为key-value数据库中的key使用。因为Z曲线支持多维数据,所以GeoMesa也支持将多维数据降为一维数据,作为key使用。 GeoMesa 索引 GeoMesa 索引的基本原理计算将三维(经度、纬度、时间)的数据按照Z曲线进行降维,得到一维数据作为Key使用,方便在key-value数据库中进行查询。 实际的Key结构比简单的键值对更复杂。在Accumulo中GeoMesa索引的结构如图7:

gis, OpenSource Leave a comment

GeoMesa介绍

s

GeoMesa 是由locationtech开源的一套地理大数据处理工具套件。其可在分布式计算系统上进行大规模的地理空间查询和分析。使用GeoMesa开源帮助用户管理、使用来自于物联网、社交媒体、手机应用的海量的时空(spatio-temporal)数据。 GeoMesa支持将海量的时空数据存储到Accumulo,HBase,Google Bigtable和Cassandra数据库中,并提供高效的索引来读取、查询这些数据。并支持通过指定空间条件(距离和范围)来快速查询。另外GeoMesa还基于Apache Kafka提供了时空数据的近实时流处理功能。 通过和GIS Server(GeoServer)的整合, GeoMesa 提供了通过标准OGC接口(WMS/WFS)访问数据的能力,通过这些接口,用户可以方便对GeoMesa处理的数据进行展示和分析,比如查询、直方图、时间序列分析等。 为什么选择GeoMesa 能够存储和处理海量时空数据 支持实时性强、需要快速读写的数据 支持spark分析 支持水平扩展 通过GeoServer提供地图服务,并支持Common Query Language (CQL) 项目地址 http://www.geomesa.org/‘ 授权 GeoMesa使用Apache License Version 2.0协议。 http://apache.org/licenses/LICENSE-2.0.html

gis, OpenSource Leave a comment

基于Mapbox+osrm的iOS离线导航解决方案

s

osrm(project-osrm.org)一个c++的route类库,他提供了osm-route方法使其作为服务器运行,同时也提供了libosrm库,供用户以API的方式使用。 由于osrm是一个纯c++的库,因此就具备了移植到iOS的可能。 同时mapbox提供的directions功能也是基于osrm的,因此可以将离线的osrm route结果直接给osrm使用,然后再给mapbox的navigator使用。 上个demo

iOS, OpenSource Leave a comment

Kong 介绍

s

Kong,是一款基于lua的API管理软件。能够注册、管理API,能够提供API的验证访问。Kong本质上始一个反向代理软件,类似于ngnix,但比nginx提供了更简单的配置方式(REST接口)。 Kong的主页为:https://getkong.org/ Kong的安装 kong支持在大多数linux平台、mac osx上安装。还提供了docker镜像,用户可以直接下载使用。 kong的安装比较简单,直接选择对应的平台安装包下载安装即可,当然也可以通过source code编译安装。code的地址为:https://github.com/Mashape/kong kong的配置 kong使用前要首先配置数据库,目前kong支持”cassandra”, “postgres”,配置文件中默认使用cassandra。本文中使用postgres。 安装数据库 首先安装postgres,然后创建名字为kong的user createuser kong -P 然后创建名字为kong的数据库 createdb kong -O kong -E UTF8 -e 配置数据库 打开 /etc/kong/kong.yml 文件,找到数据库配置的相关位置,配置如下 postgres: host: “127.0.0.1” port: 5432 user: kong password: kong database: kong 保存配置文件即可 启动kong $ kong start ####验证kong是否启动成功 在start后,命令行会提示([OK] Started) 默认情况下,kong的代理端口为8000,管理员REST接口的端口为8001 关闭kong $ kong stop 重新加载kong $ kong reload […]

cloud Leave a comment

ERROR: SQLite database is malformed 的解决方法

s

原文地址:http://froebe.net/blog/2015/05/27/error-sqlite-database-is-malformed-solved/ //检查数据 sqlite> pragma integrity_check; Error: database disk image is malformed //把数据dump出来 sqlite> .mode insert sqlite> .output mydb_export.sql sqlite> .dump sqlite> .exit //备份数据库 mv mydb.db mydb.db.original //导入数据 sqlite3 mydb.db < mydb_export.sql //重建索引 sqlite> analyze; sqlite> .exit

linux, Mac OS X Leave a comment

proj.4 字符串转成Esri wkt字符串的方法

s

proj.4 字符串转成Esri wkt字符串的方法 使用gdal/ogr库进行转换 import os import sys import string import osgeo.osr if (len(sys.argv) <> 2): print ‘Usage: proj2wkt.py [Proj4 Projection Text]’ else: srs = osgeo.osr.SpatialReference() srs.ImportFromProj4(sys.argv[1]) srs.MorphToESRI() //重点,转成Esri的wkt格式 print srs.ExportToWkt()

ArcGIS Leave a comment

ITMS-90096错误解决

s

如果你的App的启动页面采用Launch Screen.storyboard的话,上传到AppStroe会导致ITMS-90096错误,提示 your binary is not optimized for iphone 5 解决这个问题有两种方案,如果需要支持iOS7及以下系统,使用老的Launch Image方案,制作各个尺寸的启动图片,并加载到App中。 第二种方案,如果不必要支持iOS7 及以下版本,直接将Depolyment target 设置为iOS8,并将Launch Screen.storyboard文件重命名为LaunchScreen.storyboard。注意只是去掉空格。 参考资料: http://stackoverflow.com/questions/27136053/cant-submit-the-app-with-storyboard-launch-images-to-the-app-store-your-binary  

App Leave a comment

Numeric Character Reference转NSString

s

在处理数据的时候,有时候会遇到 &# 开头的数据,例如Σ那么这个是 Numeric Character Reference编码。 NCR编码是由一个与号(&)跟着一个井号(#), 然后跟着这个字符的Unicode编码值, 最后跟着一个分号组成的, 如: &#nnnn; 或者 &#xhhhh 其中, nnnn是字符编码的十进制表示, 而hhhh是字符的16进制表示. 在ios中处理这种编码有两种方法,一种使用NSAttributedString的方式,这种比较简单,但是处理极慢。另外一种就是自己写编码转换。 两种实现的代码如下: -(NSString *)toUnicodeString { NSMutableString *srcString = [[NSMutableString alloc]initWithString:self]; if ([srcString containsString:@”&#”]) { [srcString replaceOccurrencesOfString:@”&#” withString:@”” options:NSLiteralSearch range:NSMakeRange(0, [srcString length])]; NSMutableString *desString = [[NSMutableString alloc]init]; NSArray *arr = [srcString componentsSeparatedByString:@”;”]; for(int i=0;i&lt;[arr count]-1;i++){ NSString *v = [arr objectAtIndex:i]; […]

App, Mac OS X Leave a comment

自定义ArcGIS矢量底图

s

目前Esri已经在ArcGIS Online上发布了矢量底图,用户可以通过修改Style的方式来自定义矢量底图。 用户编辑后的矢量底图还可以发布成新的图层,供用户使用。 用户自定义的内容包括: 1 控制图层的显示 2.修改图层的符号和显示 3.在选定区域修改语言选项 4.在选定地区修改争议地区的显示 自定义Style示例 下图就是由一个自定义矢量底图的例子,由现有由矢量底图修改而来。 修改的内容主要包括: 1.背景颜色和水系颜色由 ‘#cfcfd4′改成 ‘#a6deff’ 2.土地和植被的填充颜色由‘#ededed’ 改成 ‘#dfffd9′ 3.城区颜色由‘#e8e8e8′ 改成 ‘#d5e3ca’ 由于上面的图层在不同的显示级别都有可能显示,所以修改的不止一处。 创建使用自定义矢量底图的地图 创建新的Tile Layer 1.登录到ArcGIS Online,点击Map,打开Map窗口 2.添加矢量瓦片图层,点击Add按钮,选择Search for Layers in ArcGIS Online,输入“esri vector basemap”,点击GO按钮 3.选择owner为‘esri_vector’的任意一个图层,然后点击Add按钮 4.在TOC面板中,点击刚才添加的图层的More Option按钮,选择Copy 5.点击刚才Copy的图层的More Option选项,选择Save Layer按钮,将图层保存Online中 修改新建图层的Style 1.点击上一步新生成的图层的More Option选项,选择Show Item Details选项 2.在Item详情页面的Open选项中选择Download Style选项,将Style文件下载到本地 3.编辑Style文件。打开root.json文件,并编辑该Style文件,保存或另存文件。 Esri的矢量底图使用Mapbox vector tile specification (v8),用户可以参考 Mapbox […]

ArcGIS Leave a comment