从层源创建平铺集并为其提供服务的服务

django-tilebundler的Python项目详细描述


tilebundler
==
在[mbtiles][6]文件中为提供的层缓存指定"边界"中的所有磁贴并公开结果"tileset"以供下载的服务。更具体地说,tilebundler是一个[django][1]应用程序,它使用[mapproxy][2]从本地和远程层生成tileset。应用程序的目的是简化tileset的创建和分发,特别是对于需要在断开连接的环境中操作的移动应用程序。

它是在[rogue][4]项目下开发的开源应用程序,是[geoshape][3]生态系统的一部分。您可以将tilebundler合并到其他应用程序中,并可以创建


notes
==
-tileset的"geom"可以指定为:
-边界框:`[-77.47,38.72,-76.72,39.08]`
-geojson:`{…}`
-wkt多边形或多多边形:`多边形((-4.5703125 84.0228901101526165.5859375 84.0228901101526165.5859375 6.0313107125822,-4.5703125 6.0313107125822,-4.5703125 84.0228901101526)`

-您可以从本地地理服务器上的层创建平铺集。请确保在图层名称前加上前缀`<;workspace>;:`例如:`geonode:ne-50m-u-admin-0-u-countries`。如果本地服务器启用了ssl,但没有有效的证书,则可以提供http url而不是https。

-如果tileset的服务类型是"tile",则它可以是xyz层,也可以是tms层。这些类型的层处理边界的方式不同,需要加以解决。这可能意味着缓存该层上的边界将需要不同的原点,特别是镜像赤道的原点。这是通过反转几何体的y值来完成的。下面将显示一个示例。在生成tileset之前执行此操作。如果您的tileset位于世界的错误一侧,并且/或者所有的tileset都颠倒过来,则在反转后重新生成tileset。有关此概念的更多文档可在[此处][8]找到。

-如果计划从openstreetmap或hiu tms服务器进行缓存:
-openstreetmap-请遵循以下信息。从外部来源(或openstreetmap.org的导出功能)获取边界时,请确保边界镜像赤道。
-hiu tms-确保使用翻转的url(例如:洪都拉斯,tegucigalpa=http://hiu maps.net/hot/1.0.0/tegu-15feb2010-flipped/%(z)s/%(x)s/%(y)s.png),还具有镜像赤道的边界。
-关于如何镜像赤道的示例将为[此处][9]。
-osm+tms缓存的示例输出将为[此处][10]。

当前不支持GeoServer上的WMS层。

示例-镜像赤道:
--
边界的顺序为:
[左、下、右、上]


弗吉尼亚州福尔斯教堂的标准OpenStreetMap边界:
[-77.21917,38.85804,-77.21295,38.86337]

bottom=-top
38.85804=-38.86337

top=-bottom
38.86337=-38.85804


弗吉尼亚州瀑布教堂的开放式街景地图边界:
[-77.21917,-38.86337,-77.21295,-38.85804]



示例输出-osm和tms:
——
*openstreetmap:falls church,va*
````
{
"创建时间":"2015-08-19t13:58:54.002882",
"创建时间":
{
"名字":",
"姓氏":",
"资源uri":",
"用户名":"管理员"
},
"文件大小":820224,
"文件更新":"2015-08-19t14:26:08.959459",
"geom":"[-77.21917,-38.86337,-77.21295,-38.85804],
"id":15,
"层名称":"OSM",
"层缩放开始":0,
"layer_zoom_stop":18,
"name":"openstreetmapdotorg",
"resource_uri":"/api/tileset/15/",
"server_service_type":"tile",
"server_url":"http://b.tile.openstreetmap.org/%(z)s/%(x)s/%(y)s。png",
"服务器用户名":"
}
```

*openstreetmap本地地理服务器vm:falls church,va*
```
{
"创建于":"2015-08-04t14:14:52.977549",
"创建于":
{
"名字",
"姓氏":",
"resource-uri":",
"username":"admin"
},
"file-size":820224,
"file-u updated":"2015-08-19t10:41:33.265202",
"geom":"[-77.21917,-38.86337,-77.21295,-38.85804]\r\n",
"id":4,
"layer-uri":"osm",
"layer_zoom_start":0,
"layer_zoom_stop":18,
"name":"osmlocal",
"resource_uri":"/api/tileset/4/",
"server_service_type":"tile",
"server_url":"http://(location_your_osm_vm)/osm_tile s/%(z)s/%(x)s/%(y)s.png",
"服务器用户名":"
}
```

*tms-洪都拉斯,特古西加尔巴:*
```
{
"创建时间":"2015-08-04t15:19:49.048624",
"创建时间":
{
"名字":",
"姓氏":",
"资源uri":",
""用户名":"admin"
},
"文件大小":118784,
"文件更新":"2015-08-19t10:41:33.265202",
"geom":"[-87.20499,14.09714,-87.20273,14.09966],
"id":7,
"层名称":"tegu layer",
"层缩放开始":0,
"layer_zoom_stop":18,
"name":"hiu tegu_tms",
"resource_uri":"/api/tileset/7/",
"server_service_type":"tile",
"server_url":"http://hiu maps.net/hot/1.0.0/tegu-15feb2010-flipped/%(z)s/%(x)s/%(y)s.png",
"服务器用户名":"
}
```


&;nbsp;nbsp;

API快速指南
=====
若要创建TileSet对象,请使用Django管理API。我们希望将tile set对象的创建嵌入到[maploom][6]中,用户可以在其中向地图添加所有感兴趣的图层,绘制几何图形,并为tile集指定缩放范围。它们还可以从[MapLoom][6]中触发生成、查看进度和管理服务器上的tileset。

`/api/tileset`
----
获取所有tileset对象的列表,作为json

**示例响应**
```
{
"meta":{
"limit":20,
"next":null,
"offset":0,
"previous":null,
"total\u count":3

"对象":[
{
"创建位置":"2015-07-15t12:45:39",
"创建位置":{
"名字":",
"姓氏":",
"资源uri":",
"用户名":"管理"
},
"文件大小":"3145728",
"geom":"多边形((-4.5703125 84.0228901101526165.5859375 84.0228901101526165.5859375 6.0313107125822,-4.5703125 6.0313107125822,-4.5703125 84.0228901101526)",
"id":1,
"层名称":"geonode:ne-50m"管理0"国家,
"层缩放开始":0,
"layer_zoom_stop":5,
"name":"country_bounders",
"resource_uri":"/api/tileset/1/",
"server_service_type":"wms",
"server_url":"http://192.168.99.100/geoserver/wms",
"server_username":"admin"
},
{
"创建者":"2015-07-15t12:16:07",
"创建者":{
"名字":",
"姓氏":",
"资源uri":",
"用户名":"管理员"
},
"文件大小":"1368064",
"geom":"[-77.6843,38.4299,-76.3152,39.2982],
"id":2,
"layer-zoom-start":0,
"layer-zoom-stop":12,
"name":"osm-wms-dc",
"resource-uri":"/api/tileset/2/",
"server-service-type":"wms",
"服务器URL":"http://osm.omniscale.net/proxy/service",
"服务器用户名":"
},
{
"创建时间":"2015-07-15t12:43:56",
"创建时间":{
"名字":",
"姓氏":",
"资源uri":",
"用户名":"管理员"
},
"文件大小":"4706304",
"geom":",
"id":3,
"层名称":"syrus",
"层缩放开始":0,
"层缩放停止":5,
"name":"openstreetmap",
"resource_uri":"/api/tileset/3/",
"server_service_type":"tile",
"server_url":"http://a.tile.openstreetmap.org/%(z)s/%(x)s/%(y)s.png",
"服务器用户名":"
}
]
}
````


`/api/tileset/1`
——
获取ID为1的tileset对象作为json

**示例响应**
````
{
"创建位置":"2015-07-15t04:33:07",
"创建人":{
"名字":",
"姓氏":",
"resource-uri":",
"用户名":"admin"

"filesize":"8192000",
"geom":"[-83.507,25.160,-78.030,29.128],
"geom":"[-83.507,25.160,-78.030,29.128],
"id":1,
"layer'u-name":"osm"层,
"layer'u-name":"osm"层:0,
"layer'br/>"layer-zoom-zoom"层:12,
"name":"osm":"osm":"osm":"osm"_fl",
"resource-uri":"/api/tileset/1/",
"server-service-type":"wms",
"server-url":"http://osm.omniscale.net/proxy/service",
"server-username":"
}
````

`/api/tileset/1/generate`
触发tileset文件的创建对于ID为1的tileset

**预期状态**
-`started`:刚开始生成mbtiles
-`already started`:未开始生成mbtiles,因为它已经启动并且当前正在运行

**示例响应**
`{"状态":"started"}`

`/api/tileset/1/stop`
=-
停止生成ID为1的tileset

**预期状态**
-`not progress`:生成tileset未在进行中
-`stopped`:生成mbtilesstopped

`/api/tileset/1/status`
--------
将检索ID为1的tileset的状态,并指示生成tileset时的"当前"tileset和"挂起"状态。请注意,生成tileset时,它将保存为.generating文件,而不是.mbtiles,并且它仅在生成完成时替换mbtiles文件。前一个mbtiles是为良好的度量而备份的,因为错误的触发器generate可能会丢弃一个tileset,该tileset可能需要一段时间才能生成。注意,如果mbtiles已经存在,并且tileset再次生成,那么在生成过程中,上一个tileset仍然可以下载。类似地,如果当前生成被停止,主tileset将仍然有效和可用。

**预期状态**
-`not generated`:与此tileset对象对应的mbtiles不存在。
-`ready`:可以下载mbtiles文件。注意,生成tileset时,在完全生成之前,它不会替换任何现有tileset。如果已生成tileset,然后停止以下"generate",则将使用上次完成的tileset。
-`stopped`:生成mbtiles的过程在完成之前已停止。请注意,通常情况下,除非tileset生成完成,否则mbtile文件不会替换以前的tileset。
-`in progress`:生成mbtiles当前正在进行
-`in progress,but log not found`:找到mbtiles,但找不到相应的日志文件。

**示例响应**
```
{
"当前":{
"文件大小":1155072,
"状态":"就绪",
"更新":"2015-07-23t04:05:07"
,"待定":{
"当前缩放级别":"4",
"预计完成时间":"2015-07-23t04:38:40",
"文件大小":237568,
"进度":"37.50",
"状态":"进行中",
"更新":"2015-07-23t04:35:41"
}
}
````

`/api/tileset/1/download`
--------
下载从tileset生成的mbtiles文件,ID为1

**预期状态**
-`not generated`:找不到与此tileset对应的mbtiles对象。无效的URL将锁定tileset的生成。进度不会超过0%,进度日志将反映这一点。
-`注意:如果在虚拟机上,生成的.lck将有一个PID,rogue_geonode日志文件将打印有一个服务器错误。`
-无效的用户名/密码将锁定tileset的生成,并产生与无效URL的结果相似。
-将生成无效的几何图形,但无法在地图上显示。

[1]:http://djangoproject.com"django"
[2]:http://mapproxy.org"mapproxy"
[3]:http://geoshape.org"geoshape"
[4]:http://github.com/rogue-jctd/"rogue"
[5]:http://github.com/rogue-jctd/arbiter-android"仲裁器"
[6]:http://github.com/mapbox/mbtiles-spec"mbtiles"
[7]:http://github.com/rogue-jctd/maploom"maploom"
[8]:https://alastaira.wordpress.com/2011/07/06/将tms tile坐标转换为googlebingosm tile坐标/
[9]:https://github.com/rogue-jctd/django tilebundler示例——镜像赤道
[10]:https://github.com/rogue-jctd/django tilebundler示例输出——osm和tms

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在JTextPane中为文本和下划线设置不同的颜色?   java如何在运行时处理注释?   java将对象从一个RecyclerView移动到另一个RecyclerView   使用Spring Secutiry在Spring引导中从后端注销java   安卓 Java读取文本文件并将每一行保存为新的字符串数组   获取Java中BuffereImage的部分时出错   JavaSpring:如何以编程方式在BeanDefinition的list属性中填充bean引用列表?   来自Maven的Java服务包装器类路径排序   java SMS消息传递未发送   java应用程序引擎在尝试批量插入多个实体时出错,条件是每次插入实体时属性“UserNo”增加1   java FileHandle在libgdx中的行为异常   用Tic-Tac-Toe表示游戏状态的java   java试图在字符串中输出*的出现次数   java没有名为wspersist的EntityManager的持久性提供程序   在Java中读取JSON多维数组   无法在xml配置文件的整数属性中解析java Spring EL   Java属性:如何转义#(散列)