Web映射应用程序中流行的平铺网格和网格API

gatilegrid的Python项目详细描述


gatilegrid

Build Status

用于Web映射应用程序的Geoadmin自定义磁贴网格

gatilegrid与python 2.7、3.5和3.6兼容

安装

$ pip install gatilegrid

使用量

支撑着几个瓦栅,即21781、2056、3857和4326。这是一个使用21781的例子。 对于4326,可以使用一个附加参数(tmsCompatible=True)。

fromgatilegridimportgetTileGridfromgatilegridimportGeoadminTileGridLV03asGeoadminTileGridzoom=18tileCol=6tileRow=7# Get and initialize the grid (top-left and bottom-left are availble)gagrid=getTileGrid(21781)(originCorner='top-left')# With extent constraintoffset=100000gagridExtent=GeoadminTileGrid(extent=[gagrid.MINX+offset,gagrid.MINY+offset,gagrid.MAXX-offset,gagrid.MAXY-offset])bounds=[xmin,ymin,xmax,ymax]=gagrid.tileBounds(zoom,tileCol,tileRow)print(bounds)>>>[496800.0,247600.0,509600.0,260400.0]print(gagrid.tileAddressTemplate)>>>{zoom}/{tileCol}/{tileRow}topLeftCorner=[xmin,ymax]tileAddress=[tileCol,tileRow]=gagrid.tileAddress(zoom,topLeftCorner)print(tileAddress)>>>[6,7]# Get the parent tilesparentZoom=1gagrid.getParentTiles(zoom,tileCol,tileRow,parentZoom)>>>[[1,0,0]]# It also works if the point is within the tilepointInTile=[topLeftCorner[0]+200.0,topLeftCorner[1]-200.0]print(gagrid.tileAddress(zoom,pointInTile))>>>[7,6]# Resolution in metersprint(gagrid.getResolution(zoom))>>>50.0# Scale dpi dependent (defaults to 96)print(gagrid.getScale(zoom,dpi=96.0))>>>188976.0# Tile size in metersprint(gagrid.tileSize(zoom))>>>12800.0# Number of tiles at zoomprint(gagrid.numberOfTilesAtZoom(zoom))>>>950# Extent dependentprint(gagridExtent.numberOfTilesAtZoom(zoom))>>>253# Get the closest zoom for a given resolutionprint(gagrid.getClosestZoom(245))>>>16# Get the ceiling zoom for a given resolutionprint(gagrid.getCeilingZoom(245))>>>17# Generate tilesSpecminZoom=16maxZoom=zoomtilesSpecGenerator=gagrid.iterGrid(minZoom,maxZoom)fori,tinenumerate(tilesSpecGenerator):(tileBounds,zoom,tileCol,tileRow)=tprint(t)ifi==1:break>>>([420000.0,286000.0,484000.0,350000.0],16,0,0)>>>([484000.0,286000.0,548000.0,350000.0],16,1,0)# Extent dependenttilesSpecGeneratorExtent=gagridExtent.iterGrid(minZoom,maxZoom)fori,tinenumerate(tilesSpecGeneratorExtent):(tileBounds,zoom,tileCol,tileRow)=tprint(t)ifi=1:break>>>([484000.0,222000.0,548000.0,286000.0],16,1,1)>>>([548000.0,222000.0,612000.0,286000.0],16,2,1)

该模块还为网格单元寻址提供了一个简单的网格api。

fromgatilegridimportGridextent=[485349.96,75250.055,833849.959,295950.054]resolutionX=100.0resolutionY=-100.0grid=Grid(extent,resolutionX,resolutionY)# We use singed resolution to define the origin.# Here the origin is at the top-left corner.print(grid.origin)>>>[485349.96,295950.054]# The Grid class defines a series of useful propertiesprint(grid.cellArea)>>>10000.0print(grid.nbCellsX)>>>3485print(grid.nbCellsY)>>>2207print(grid.isTopLeft)>>>Trueprint(grid.isBottomRight)>>>False[col,row]=grid.cellAddressFromPointCoordinate([500000,100000])print(col)>>>146print(row)>>>1959# Get the extent of the cell using its addresscellExtent=grid.cellExtent(col,row)print(cellExtent)>>>[499949.96,99950.054,500049.96,100050.054]# Get an address range using an extent[minCol,minRow,maxCol,maxRow]=grid.getExtentAddress([500000,100000,550000,150000])print(minCol)>>>146print(minRow)>>>1459print(maxCol)>>>646print(maxRow)>>>1959

测试

source .venv/bin/activate
python setup.py test

发布模块的新版本

编辑$HOME/.pypirc并添加(keepass中的用户名和密码):

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://upload.pypi.org/legacy/
username=iwi***
password=

[pypitest]
repository=https://test.pypi.org/legacy/
username=iwi***
password=

setup.py中的凹凸版本。

生成、检查新模块并将其上载到测试存储库:

pip install --upgrade twine wheel setuptools
python setup.py sdist bdist_wheel
twine upload --repository testpypi dist/*

从测试存储库测试本地安装。

pip install -i https://test.pypi.org/simple/ gatilegrid

如果一切正常,将新版本推送到默认存储库。

twine upload --repository pypi dist/*

测试新创建的模块。

在github中创建一个版本。

贡献者:

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

推荐PyPI第三方库


热门话题
java需要在环境或系统属性中指定类名,或者作为小程序参数,或者在应用程序资源文件[springtest]中指定类名   使用流映射java 8转换另一个列表中的列表   docusignapi如何使用java将信封状态更改为“void”?   java Hibernate“提供的id类型错误,预期为Long,Get class DelayedPostInsertIdentifier”异常   升级Tomcatembed版本后java Basic登录身份验证失败   java如何将第三个元素作为循环从数组中删除?   playframework 2.0注销流程正在运行!框架2.0,java   java如何读取hadoop顺序文件?   java如何循环json并在上下文中发布每个索引   爪哇树深度   java多线程场景中的多线程列表更新   java遗传算法:请求优化   java jersey http客户端自定义请求方法   Ubuntu 12.04上带有openjdk 6的java NullPointerException   java如何获取页面上动态显示的复选框的ID   如果以D/M而不是DD/MM的形式输入日期或月份,则将前导零添加到日期字段   java Apache Oltu+Microsoft Integration OAuthProblemException{error='invalid_request',description='missing required parameters',包含无效的   java JsonWriter IOException不完整文档   java无法对非静态字段(操作侦听器)进行静态引用