- 浏览: 7256576 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 3291TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51456文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14000最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8630TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2662TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2762TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2401TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2719TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2647TestNG官方网站: http://testng.or ... -
TestNG简单的学习(四)测试方法通过名称名称依赖实现
2013-12-02 09:21 2036TestNG官方网站: http://testng.or ... -
TestNG简单的学习(三)测试方法通过测试分组依赖实现
2013-12-02 09:21 2771TestNG官方网站: http://testng.or ... -
TestNG简单的学习(二)参数化测试并发且多方法测试方法判定
2013-11-29 15:35 3638TestNG官方网站: http://testng.or ... -
TestNG简单的学习(一)类和方法级别@Test的区别
2013-11-29 15:31 9383TestNG官方文档的地址: http://testng ... -
Feed4Junit的简单使用(七)Feed4TestNg
2013-11-29 13:35 6084在Feed4Junit主要针对junit实现的 ... -
Feed4Junit的简单使用(六)数据来特定格式文件
2013-11-29 12:29 2691Feed4Junit官方地址: http://da ... -
Feed4Junit的简单使用(五)数据来自动态约束数据
2013-11-29 12:29 2567Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(四)数据来自定义数据源
2013-11-28 14:09 3045Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(三)数据源来自数据库
2013-11-28 13:58 3101Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(二)数据源来自文件
2013-11-28 13:50 4522Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(一)
2013-11-28 13:47 2161Feed4Junit官方地址: http://databe ...
相关推荐
设计用于完全替换 Android 内部的 MapView 类,包含一个模块化的地图拼图,支持在线和离线地图以及覆盖地图,支持标注图标、位置跟踪和绘制形状。地图引擎使用 OpenStreetMap
NULL 博文链接:https://topmanopensource.iteye.com/blog/1637317
GIS在智慧交通中的应用介绍(GIS-T).pptGIS在智慧交通中的应用介绍(GIS-T).pptGIS在智慧交通中的应用介绍(GIS-T).pptGIS在智慧交通中的应用介绍(GIS-T).ppt
全国信息化工程师----GIS应用水平考试(NCIE-GIS.pdf
GIS应用开发教学实务-ArcGIS-应用程序框架.ppt
开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列开源GIS---java系列...
win10解决安装.NET Framework 3.5安装不上,错误代码:0x800F081F,解决办法:超级管用。
在Z-GIS框架安装程序中,暂时只提供Z-GIS框架在国土行业的应用范例及C#(.NET)开发范例源码,如需要其他语言的开发范例源码请联系作者!基于Z-GIS框架进行产品开发需要符合COM规范,但也并非必须完全符合COM规范。
用VC++开发基于MapX的GIS应用程序-实现地图的各种功能
ArcObjects GIS应用开发--基于C#.NET--v3.1.pdf
全国 1-5 级河流 gis 地图shp,xml,shx,dbf文件 全国 1-5 级河流 gis 地图shp,xml,shx,dbf文件 全国 1-5 级河流 gis 地图shp,xml,shx,dbf文件
IEC61970 CIM模型标准, 国家能源局于2016年颁布的较新电力行业标准,提供此资料方便院校研究和调度自动化、配网自动化、电力GIS应用以及PMS系统接口开发
GIS地图开发室内外地图应用案例
HTML+CSS+JS数据可视化大屏平台模板实例30-智慧物联网+GIS地图通用模板
重点讲解使用.net建立桌面GIS的步骤,控件的使用方法,很适合初学者学习。
spatialite gis是一个GIS小工具,能够从spatialite中读取、渲染空间数据。
一个非常好用gis arctool的工具--距离角度生成点神器!只需要将该工具添加到ArcGIS自定义工具箱里面,双击即可运行,方便高效。
GIS 地图亚洲地图
城乡规划GIS学习/GIS方法/经典分析
附件中是一些代码的集合,主要是一些比较常见的GIS功能的实现方法,我用C#+AE都实现了,可能包括基本GIS地图操作,空间分析,几何或交通网络分析等,内容还不错,可以让不太懂的人学习一下,也可以让比较懂的人借鉴一下,因为...