7 七之阿瑞安赫德

尚未进行身份认证

我要认证

帮助别人,快乐自己

等级
TA的排名 4w+

gdal切火星偏移的瓦片

支持火星偏移默认改为谷歌瓦片模式(/z/x/y),原来是/z/x/-y支持瓦片压缩# -*- coding=utf-8 -*-import platformfrom xml.etree import ElementTreeimport jsonfrom osgeo import gdal, osrfrom uuid import uuid4import sysimport shutilimport tempfileimport osimport mathfrom multip.

2020-05-27 10:30:28

Matlab编译为python在docker中运行

0. 准备本文只讨论将matlab封装成python,并在docker中运行python脚本的情况要让matlab运行在docker里,你需要:在本机,你需要安装matlab和对应版本的matlab compiler runtime(简称mcc),在这里下载需要准备一个和你本机的matlab版本相同的MCC的Docker镜像,所幸有现成的,在这里1. 将matlab函数编...

2020-05-03 20:59:52

How it works(14) GDAL2Tiles源码阅读

引入gdal2tiles(以下简称g2t),这个历史悠久的切图脚本依然能发挥其功用,因为它稳定的做好了它应做的东西.相比前面说过的gdal2mbtiles(以下简称g2m),我倒是更喜欢它,单文件脚本,运行只安装一个GDAL库足矣.同样因为有了g2m,我也是带着对比的心态提出几个问题:从表现来看,g2t更慢慢的原因是什么可以采用g2m加速吗与g2m对比,其算法有何差异精简原...

2020-01-21 13:31:34

Altizure Node.js后端DEMO

const { GraphQLClient} = require('graphql-request'), shasum = require('shasum'), OSS = require('ali-oss'), Promise = require("bluebird");const path = require('path'), fs = requ...

2019-10-31 17:29:24

How it works(13) Tileserver-GL源码阅读(B) 栅格瓦片的渲染

serve_rendered.js是什么使tileserver如此的无可替代?是他的栅格瓦片渲染.当Tilestrata和Tilestache还在用需要复杂配置文件的mapnik时,tileserver却将web页面的mapbox直接搬到了服务端,达到了前后端配置文件与效果的完全统一,在maputnik的帮助下,样式的调整也变得方便异常.这就造就了整个tileserver里最大的模块:...

2019-07-03 21:35:35

How it works(12) Tileserver-GL源码阅读(A) 服务的初始化

引入Tileserver-GL(以下简称tileserver),klokantech公司出品的nodejs编写的地图服务,也是我们已经用于生产环境的地图服务.它是少有的开箱即用的且带有图形界面的轻量级地图服务了,这也是我们能快速的将它应用于实际的原因.Tileserver方便且美观的地图渲染且能与maputnik完美结合,这几乎是我第一次找到能完全替代geoserver的组合,而它同时也包含了...

2019-06-22 14:29:42

How it works(11) NodeODM源码阅读(B) 任务控制与任务后处理

任务运行时上一节的最后,通过"TaskManager.singleton().addNew(task);"方法,新建的任务被加入进了任务管理器,自此,任务的一切都交由任务管理器来调控了.由上方的代码可以看出,TaskManager是一个单例实例.原因是保证当Taskmanager(下面简称任务管理器)在不同模块被引用时,都指向唯一的任务管理器实例.//在整个应用启动时,执行TaskManag...

2019-03-22 20:01:19

How it works(10) NodeODM源码阅读(A) 鉴权与任务初始化

引入OpenDroneMap(ODM)是一款非常强大的无人机成果处理软件,可以直接将无人机拍摄的照片处理成正摄影像甚至进行三维建模.ODM本身是基于python的OpenSFM编写的命令行工具,为了方便实际使用,NodeODM出现了.NodeODM是Nodejs编写的一套带有可视化界面的API,实现了通过接口上传图片,修改配置,获取进度等常用功能.因此我们一般用的都是NodeODM,很少会直接...

2019-03-19 22:15:13

How it works(9) GDAL2Mbtiles源码阅读(C) 影像预处理与核心流程

gdal.pygdal.py封装了所需的与gdal相关的操作.主要用来进行切割前的处理.主要操作有投影变换与抽取波段:def preprocess(inputfile, outputfile, band=None, spatial_ref=None, resampling=None, compress=None, **kwargs): # 所有要进行的预...

2019-03-03 13:00:13

How it works(8) GDAL2Mbtiles源码阅读(B) 影像切割与处理

vips.py最重要的切图模块,使用的是libvips这一快速轻量的c++模块的py绑定pyvips,这也是g2m里最大的一个模块.切图主要分为两部分:瓦片分隔波段处理瓦片分割瓦片分割是g2m的核心功能.基本流程是:获取图片(直接使用原片或重采样后的图片)从图片中裁取固定大小计算该部分所属行列号,进行存储.因为实际使用中,基本不可能只取某个特定的级别,因此对于低缩放级别...

2019-03-03 12:59:40

How it works(7) GDAL2Mbtiles源码阅读(A) 框架与存储

引入gdal2Mbtiles是个小工具(以下简称g2m),其作用是将栅格地图(主要是Tiff格式)切成瓦片,存入Mbtiles格式的数据库中,以便于其他支持Mbtiles格式的地图服务器直接调用.一开始我也是为了用它来切割Tiff底图,发布Tileserver-GL服务的,不过用了一下,发现其切图速度比较快.所以想看一下其内部结构.觉得其代码并不简单,也是一个深思熟虑的系统.整体架构通观...

2019-03-03 12:58:54

How it works(6) TileStache源码阅读(B) 自带功能模块

引入TileStache的核心阅读完了,就可以看看具体的功能部分是如何运行的.功能部分有4大类:Caches.pyPixelEffects.pyPixels.pyProviders.py模块Caches.py缓存的使用在上一篇已经看过了:读取缓存不需要锁写入缓存必须先加锁,再写入,再解锁所有的缓存都必须实现如下的方法:savereadlock/unlock...

2019-03-03 12:57:43

How it works(5) TileStache源码阅读(A) 核心框架

引入作为一个维护时间更长久的地图服务器(从2010年至今),Python编写的TileStache有着跟Nodejs编写的Tiletrata不同的设计理念:全面专业.包含较多常用或不常用的专业地理信息功能.配置文件.与Tilestrata的代码即配置不同,TileStache完全基于一个独立的配置文件来调配整个系统.功能相比Tilestrata的只编写框架,功能完全靠插件加载,Til...

2019-03-03 12:57:06

How it works(4) Tilestrata源码阅读(B) 地图负载均衡

引入阅读Tilestrata的源码是绕不开Tilestrata-Balancer(以下简称TB)这个默认的负载均衡服务的.其特性是:支持动态增加,减少节点定时检查节点健康状况简单的请求过滤大多数服务会采取专业的负载均衡或者反向代理,比如常见的nginx.理论上讲,nodejs的http-proxy性能是拍马也不及nginx的,但对于地图瓦片服务,绝大多数瓶颈在瓦片的生成,而非反向代理...

2019-03-03 12:56:11

How it works(3) Tilestrata源码阅读(A)

引入什么是Tilestrata在地图服务领域,我们的选择其实是不多的.商业的首推arcgis server,开源的一般是mapserver和geoserver.这些专业地图服务其专业性很强,强大到可以满足几乎所有地图需求.不过正是因为有许多我们日常几乎用不到的专业功能,它们都十分的重,无论是从代码结构还是运行消耗(使用java编写的geoserver和arcgis server尤甚)上.轻量...

2019-03-03 12:55:36

How it works(2) autocannon源码阅读(A)

autocannon是纯node实现的接口压力测试工具,市面上类似的产品很多,老牌的AB,带有图形界面的soap ui等.不过autocannon可以方便的进行命令行调用,甚至在代码内调用,这对于nodejs项目的单元测试来说是相当方便的.下面就来简单分析一下他的源码.综述上一篇我对winston框架做了源码分析,其核心关键词是流,通过流将模块链接起来.而对于autocannon,关键词是...

2019-03-03 12:54:41

How it works(1) winston3源码阅读(A)

winston 是我在 nodejs 下最常用的日志框架,那么他到底是如何工作的呢?winston 的运行核心winston 中有两个关键词: 记录器(logger)和传输器(transport).记录器负责收集/修饰分配进入的每一条日志,传输器则负责最终把日志记录到的哪,整个 winston 其实就是多个流(stream)的链式调用.记录器继承了交换流(transform),而传输器...

2019-03-03 12:53:11

Sequelize的原始查询的时区问题

在postgres数据库sequelize的raw query也是受时区影响的.同样的语句,用sequelize直接执行某些跟时间相关的query和在数据库执行是不一样的.语句如下:update table_A set is_enable=1 where EXTRACT(hour from now())+(EXTRACT(MINUTE from now()))/60 >= start_...

2018-10-26 09:57:31

从零开始的Docker ELK+Filebeat 6.4.0日志管理

我们自己的地图服务会打印如下json格式的日志:(时间字段和位置字段已针对ELK的处理){"apikey":"XXXXXXX","ip":"192.168.3.208","tilesize":"512","x":100,"y&quo

2018-09-28 08:32:50

C#修改JPG图片EXIF信息中的GPS信息

/// <summary> /// 设置图片的经纬高 /// </summary> /// <param name="IN_File">文件路径</param> /// <param name="IN_Lat">纬度</param&amp

2018-03-13 11:26:04

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。