- 浏览: 7330831 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
GIS的学习(五十)应用程序中使用osmdroid-packager下载生成地图碎片
package com.etrip.osmdroid.tiles; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import org.osmdroid.mtp.adt.OSMTileInfo; import org.osmdroid.mtp.download.DownloadManager; import org.osmdroid.mtp.util.DbCreator; import org.osmdroid.mtp.util.FolderDeleter; import org.osmdroid.mtp.util.FolderFileCounter; import org.osmdroid.mtp.util.FolderZipper; import org.osmdroid.mtp.util.Util; import org.osmdroid.util.GEMFFile; /** * *源代码出处来自 OSMMapTilePackage.jar中OSMMapTilePackageLoader的类 * *官方地址: * http://code.google.com/p/osmdroid/ * *OSMMapTilePackage的使用 * http://code.google.com/p/osmdroid/wiki/HowToUsePackager * * * * @author longgangbai */ public class OSMMapTilePackageLoader { // =========================================================== // Constants // =========================================================== private static final int THREADCOUNT_DEFAULT = 2; private static boolean FORCE = false; // =========================================================== // Fields // =========================================================== // =========================================================== // Constructors // =========================================================== public static void main(final String[] args) { final String pServerURL="http://tile.openstreetmap.org/%d/%d/%d.png"; final String pDestinationFile="Mapnik"; final String pTempFolder="D://haarlem.zip"; final int pThreadCount=18; final String pFileAppendix="/"; final int pMinZoom=10; final int pMaxZoom=15; final double pNorth=52.4244d; final double pSouth=52.3388d; final double pEast=4.6746d; final double pWest=4.5949; run( pServerURL, pDestinationFile, pTempFolder, pThreadCount, pFileAppendix, pMinZoom, pMaxZoom, pNorth, pSouth, pEast, pWest); } private static void run(final String pServerURL, final String pDestinationFile, final String pTempFolder, final int pThreadCount, final String pFileAppendix, final int pMinZoom, final int pMaxZoom, final double pNorth, final double pSouth, final double pEast, final double pWest) { if (pServerURL != null) { System.out.println("---------------------------"); final int expectedFileCount = runFileExpecter(pMinZoom, pMaxZoom, pNorth, pSouth, pEast, pWest); System.out.println("---------------------------"); runDownloading(pServerURL, pTempFolder, pThreadCount, pFileAppendix, pMinZoom, pMaxZoom, pNorth, pSouth, pEast, pWest); System.out.println("---------------------------"); runFileExistenceChecker(expectedFileCount, pTempFolder, pMinZoom, pMaxZoom, pNorth, pSouth, pEast, pWest); } if (pDestinationFile != null) { System.out.println("---------------------------"); if (pDestinationFile.endsWith(".zip")) { runZipToFile(pTempFolder, pDestinationFile); } else if (pDestinationFile.endsWith(".gemf")) { runCreateGEMFFile(pTempFolder, pDestinationFile); } else { runCreateDb(pTempFolder, pDestinationFile); } System.out.println("---------------------------"); if (pServerURL != null) { runCleanup(pTempFolder); } } System.out.println("---------------------------"); } private static void runFileExistenceChecker(final int pExpectedFileCount, final String pTempFolder, final int pMinZoom, final int pMaxZoom, final double pNorth, final double pSouth, final double pEast, final double pWest) { abortIfUserIsNotSure("This will check if the actual filecount is the same as the expected (" + pExpectedFileCount + ")."); /* Quickly count files in the tempFolder. */ System.out.print("Counting existing files ..."); final int actualFileCount = FolderFileCounter .getTotalRecursiveFileCount(new File(pTempFolder)); if (pExpectedFileCount == actualFileCount) { System.out.println(" done."); } else { System.out.println(" FAIL!"); abortIfUserIsNotSure("Reason: Actual files:" + actualFileCount + " Expected: " + pExpectedFileCount + ". Proceed?"); } } private static void printUsageAndExit() { System.out.println("Usage:\n" + "-u\t[OSM-style tile URL: http://_URL_/%d/%d/%d.png]\n" + "-t\t[Temporary Folder]\n" + "-d\t[Destination-file: C:\\mappack.zip]\n" + "-zmin\t[Minimum zoomLevel to download. Default: 0]\n" + "-zmax\t[Maximum zoomLevel to download]\n" + "-fa\t[Filename-Appendix. Default: \"\"]\n" + "-n\t[North Latitude]\n" + "-s\t[South Latitude]\n" + "-e\t[East Longitude]\n" + "-w\t[West Longitude]\n" + "-nthreads\t[Number of Download-Threads. Default: 2]\n"); System.exit(0); } // =========================================================== // Getter & Setter // =========================================================== // =========================================================== // Methods from SuperClass/Interfaces // =========================================================== // =========================================================== // Methods // =========================================================== private static void runCreateGEMFFile(final String pTempFolder, final String pDestinationFile) { try { System.out.println("Creating GEMF archive from " + pTempFolder + " to " + pDestinationFile + " ..."); final List<File> sourceFolders = new ArrayList<File>(); sourceFolders.add(new File(pTempFolder)); final GEMFFile file = new GEMFFile(pDestinationFile, sourceFolders); System.out.println(" done."); } catch (final Exception e) { e.printStackTrace(); } } private static void runZipToFile(final String pTempFolder, final String pDestinationFile) { try { System.out.print("Zipping files to " + pDestinationFile + " ..."); FolderZipper.zipFolderToFile(new File(pDestinationFile), new File( pTempFolder)); System.out.println(" done."); } catch (final Exception e) { e.printStackTrace(); } } private static void runCreateDb(final String pTempFolder, final String pDestinationFile) { try { System.out.print("Putting files into db : " + pDestinationFile + " ..."); DbCreator.putFolderToDb(new File(pDestinationFile), new File( pTempFolder)); System.out.println(" done."); } catch (final Exception e) { e.printStackTrace(); } } private static void runCleanup(final String pTempFolder) { abortIfUserIsNotSure("This will delete the temp folder: " + pTempFolder + " !"); /* deleteDirecto */ System.out.print("Deleting temp folder ..."); FolderDeleter.deleteFolder(new File(pTempFolder)); System.out.println(" done."); } private static void runDownloading(final String pBaseURL, final String pTempFolder, final int pThreadCount, final String pFileAppendix, final int pMinZoom, final int pMaxZoom, final double pNorth, final double pSouth, final double pEast, final double pWest) { final String pTempBaseURL = pTempFolder + File.separator + "%d" + File.separator + "%d" + File.separator + "%d" + pBaseURL.substring(pBaseURL.lastIndexOf('.')) + pFileAppendix.replace(File.separator + File.separator, File.separator); final DownloadManager dm = new DownloadManager(pBaseURL, pTempBaseURL, pThreadCount); /* For each zoomLevel. */ for (int z = pMinZoom; z <= pMaxZoom; z++) { final OSMTileInfo upperLeft = Util.getMapTileFromCoordinates( pNorth, pWest, z); final OSMTileInfo lowerRight = Util.getMapTileFromCoordinates( pSouth, pEast, z); System.out.print("ZoomLevel: " + z + " "); for (int x = upperLeft.x; x <= lowerRight.x; x++) { for (int y = upperLeft.y; y <= lowerRight.y; y++) { dm.add(new OSMTileInfo(x, y, z)); } } try { dm.waitEmpty(); System.out.println(" done."); } catch (final InterruptedException e) { e.printStackTrace(); } } try { System.out.print("Awaiting termination of all threads ..."); dm.waitFinished(); System.out.println(" done."); } catch (final InterruptedException e) { e.printStackTrace(); } } private static int runFileExpecter(final int pMinZoom, final int pMaxZoom, final double pNorth, final double pSouth, final double pEast, final double pWest) { /* Calculate file-count. */ int fileCnt = 0; for (int z = pMinZoom; z <= pMaxZoom; z++) { final OSMTileInfo upperLeft = Util.getMapTileFromCoordinates( pNorth, pWest, z); final OSMTileInfo lowerRight = Util.getMapTileFromCoordinates( pSouth, pEast, z); final int dx = lowerRight.x - upperLeft.x + 1; final int dy = lowerRight.y - upperLeft.y + 1; fileCnt += dx * dy; } abortIfUserIsNotSure("This will download: " + fileCnt + " Maptiles!"); return fileCnt; } private static void abortIfUserIsNotSure(final String message) { if (FORCE) { return; } System.out.println(message); System.out.print("Are you sure? [Y/N] ?: "); try { java.awt.Toolkit.getDefaultToolkit().beep(); } catch (final Throwable t) { /* Ignore */ } final String line = new Scanner(System.in).nextLine().toUpperCase() .trim(); if (!line.equals("Y") && !line.equals("YES")) { System.err.println("User aborted."); System.exit(0); } } // =========================================================== // Inner and Anonymous Classes // =========================================================== }
发表评论
-
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3353TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51575文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14176最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8688TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2711TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2805TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2450TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2779TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2698TestNG官方网站: http://testng.or ... -
TestNG简单的学习(四)测试方法通过名称名称依赖实现
2013-12-02 09:21 2079TestNG官方网站: http://testng.or ... -
TestNG简单的学习(三)测试方法通过测试分组依赖实现
2013-12-02 09:21 2825TestNG官方网站: http://testng.or ... -
TestNG简单的学习(二)参数化测试并发且多方法测试方法判定
2013-11-29 15:35 3694TestNG官方网站: http://testng.or ... -
TestNG简单的学习(一)类和方法级别@Test的区别
2013-11-29 15:31 9420TestNG官方文档的地址: http://testng ... -
Feed4Junit的简单使用(七)Feed4TestNg
2013-11-29 13:35 6129在Feed4Junit主要针对junit实现的 ... -
Feed4Junit的简单使用(六)数据来特定格式文件
2013-11-29 12:29 2763Feed4Junit官方地址: http://da ... -
Feed4Junit的简单使用(五)数据来自动态约束数据
2013-11-29 12:29 2624Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(四)数据来自定义数据源
2013-11-28 14:09 3095Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(三)数据源来自数据库
2013-11-28 13:58 3164Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(二)数据源来自文件
2013-11-28 13:50 4565Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(一)
2013-11-28 13:47 2207Feed4Junit官方地址: http://databe ...
相关推荐
osmdroid是一个开源的Android库,它允许开发者在应用程序中集成OpenStreetMap(OSM)地图。这个库提供了丰富的功能,包括地图显示、缩放、平移以及各种地图源的支持。在本文中,我们将详细探讨如何使用osmdroid加载...
设计用于完全替换 Android 内部的 MapView 类,包含一个模块化的地图拼图,支持在线和离线地图以及覆盖地图,支持标注图标、位置跟踪和绘制形状。地图引擎使用 OpenStreetMap
GIS应用开发教学实务-ArcGIS-应用程序框架.ppt
可视化制图建模工具是GIS软件提供的一种工具,用户可以使用该工具在窗口中绘出模型的流程图,指定流程图的意义、所用的参数、矩阵等,即可完成制图模型的设计,而无需书写复杂的命令程序。 遥感图像处理软件 ------...
GIS程序设计与开发实验指导主要针对初学者,涉及使用ArcGIS Engine和C#进行Windows应用程序的创建。实验内容包括熟悉开发环境、控件的使用、属性设置以及控件之间的绑定,最终构建一个基础的桌面GIS应用程序框架。 ...
在GIS(地理信息系统)开发领域,MapX是一个广泛使用的组件,尤其在早期的Windows应用程序中。MapX由Bentley Systems公司开发,它提供了一种简单的方法来集成地图功能到C++应用程序中。本篇文章将深入探讨如何使用...
【GIS程序设计与开发】是本实验指导的主题,主要针对初学者,旨在介绍如何使用ArcGIS Engine和C#进行GIS应用程序的开发。首先,我们从基础的开发环境开始。 **实验一:初识ArcGIS Engine开发环境** 1. **创建...
win10解决安装.NET Framework 3.5安装不上,错误代码:0x800F081F,解决办法:超级管用。
在Delphi中开发GIS应用程序,可以利用其强大的面向对象特性及丰富的库资源,实现高效的地图处理功能。 Delphi GIS指的是在Delphi编程环境中构建GIS应用的框架和技术。Delphi是一种基于Object Pascal的集成开发环境...
### GIS地图开发室内外地图应用案例 #### 一、企业简介 上海为卓信息科技有限公司作为国内领先的企业级GIS(Geographic Information System,地理信息系统)平台提供商,自2003年成立以来一直专注于地理信息系统的...
这个特定的版本——"spatialite-gis-win-x86-ALPHA-1" 是针对Windows平台的32位版本,且标记为ALPHA阶段,意味着这是一个测试版,可能包含未解决的问题或不稳定性。 **SQLite与Spatialite**: SQLite是一款轻量级的...
### 基于C#的GIS应用程序开发 #### 引言 随着信息技术的快速发展,地理信息系统(GIS)作为一项重要的工具和技术,在多个行业中扮演着越来越重要的角色。在.NET框架下,使用C#语言进行GIS应用开发已成为一种流行的...
在"GIS.rar_gis_gis管网_百度地图_管网图形_管网地图"这个压缩包中,我们可以推测它包含了与GIS应用相关的文件,特别是关于管网地图的创建和编辑。 首先,"GIS.html"可能是该压缩包的核心文件,它可能是一个基于Web...
GIS(Geographic Information System,地理信息系统)是一种集成了...总之,掌握"GIS地图下载器"的使用,将极大地拓展我们在地理信息领域的应用能力,无论是对地图数据的获取、处理还是分析,都能带来极大的便利。
在Z-GIS框架安装程序中,暂时只提供Z-GIS框架在国土行业的应用范例及C#(.NET)开发范例源码,如需要其他语言的开发范例源码请联系作者!基于Z-GIS框架进行产品开发需要符合COM规范,但也并非必须完全符合COM规范。
通过深入研究这个开源项目,开发者不仅可以掌握预生成技术在三维地图服务中的应用,还可以学习到WebGIS的基本架构和实现,以及WebGL的编程技巧,这对于想要从事地理信息系统开发或增强现有地图应用的人来说是非常有...
第五届全国大学生GIS应用技能大赛旨在提升大学生在这一领域的实践能力和创新能力,涵盖了空间数据采集、集成处理以及空间分析技术等多个核心模块。 1. **空间数据采集与集成处理**: - 数据采集:这是GIS工作流程...
《Python与开源GIS——数据处理、空间分析...通过这个压缩包中的“pygis-bukun.pdf”,读者将全面掌握Python在GIS领域的应用,从而能够运用Python进行高效的数据处理、空间分析和地图制作,解决现实世界中的地理问题。
本项目“基于Java的GIS地图应用 .zip”提供了一个源码参考,旨在帮助开发者理解和构建自己的Java GIS应用程序。Java作为一种广泛使用的编程语言,具有跨平台性和强大的库支持,是开发GIS应用的理想选择。 在Java中...