1. poi数据导入
如果表头固定在第一行,可以扫描表头,获得你需要的数据的列号,例如下面的代码寻找姓名、性别、手机的列号: var c_name,c_sex,c_mobile; for (i=0;i
2. poi导出数据
你试试设置一下单元格的编码 cell.setCellType(HSSFCell.ENCODING_UTF_8);
3. poi 导入
POI的全称叫做Point Of Interest:兴趣点,你可以简单的理解为兴趣标签、入口。
POI地址是通过POI地址入口的扶持,大量的用户将被做大做强,POI变成用户兴趣爱好和线下推广门店的桥梁。
用户在点击进入这个入口之后,可以进入页面了解门店的地址、营业信息、优惠券领取等,和详情页有点类似
对商家来说,POI地址就是让自己的门店增加了更多展示的地方,包括店铺地址、联系电话、营业时间,另外最重要的就是可以上传视频,来展示自己门店内的商品、服务等,借此来吸引用户到自己的门店消费
同一个POI地址可以有多个门店商家同时申请,优先申请的商家拥有对后续申请者的审核权。
4. poi数据导入gis
平常我们使用导航有两种情景:一种是使用电脑或者智能设备上的地图软件来导航;另一种是使用更专业的车载导航或者手持GPS。 从地图的采集到最终应用在导航软件,整个过程将涉及到地图学、地理学、遥感技术以及计算机科学等跨学科知识。我们尽量用浅显的语言解释整个制图过程。不过在此之前,我们必须先了解两个概念。 GIS:Geographic Information System,即地理信息系统。通俗的说是将实际的地形、建筑等地理信息转换成数字模式,可以将这些数字化了的信息进行存储、分析、管理、计算等操作。 POI:Point of Interest,即兴趣点。一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。传统的地理信息采集方法需要地图测绘人员采用精密的测绘仪器去获取一个兴趣点的经纬度,然后再标记下来。 GIS和POI是构成导航内地图不可或缺的两个信息,这些信息在地图上以不同图层显示出来。经过对图层的叠加,显示进行表达的过程。对地图应用目标不同,叠加图层也不同。比如你想查看卫星图,选择“卫星图层”就可以直接显示出来。 ●地图数据分为这几大类:
1. 底图数据: 底图就是地图中最基本的图形数据和一些相关附加信息。底图数据来源有三个: 官方地图:地图厂商从政府测绘局购买其发布的权威地图。 实地外采:实地外采就是测绘人员利用专业仪器,在实地环境中测绘得到数据。这种实地外采精度高,置信度高,但是缺点是成本高,周期长。 航片卫片:通过自己拍摄或者购买高精度航空照片或者卫星照片,作为底图数据。这种地图数据被绝大多数地图厂商采用。目前航拍或者卫星地图精度已经可以达到0.05米甚至更精确,这个精度已经足够所有地图生产商使用。
2. POI数据: 上面已经解释了POI数据的概念,我们这里只讨论POI数据来源。 通过数据采集车采集:采集后数据通过手工标注。这种方式适合大规模采集标注,效率高成本低,尤其适合沿街的店面和场所的采集和标注,是目前数据采集供应商的主要采集手段之一。 通过专职或者兼职人员利用手机等智能设备进行采集:它是对上一种采集方式的补充,比较适合变动频繁的商户位置。 地址反向编译:这种方式通过门牌地址号码,运用算法进行定位标注。这种方法的好处是成本非常低,但是精度和准确度都不高。 从互联网或者企业获取:这些POI直接从专业网站抓取或者购买。一些企业也可以利用这些地图开放的API服务为自己互联网产品服务。 POI数据不需要很多资质限制,所以提供POI数据的服务生比底层数据供应商多很多。比如图吧就是主要的POI数据供应商。
3. 其他数据: 其他常见数据图层包括交通状况图层、卫星图层、三维图层、街景图。交通状况图主要依赖于安装在出租车上的GPS采集实时数据,或者通过激光测速仪、摄像头、雷达测速等专业设备采集交通路况信息。三维图层主要依靠激光扫描和手工建模。街景则依赖实地拍摄。 数据处理 获得这些数据后,需要对这些数据需要进行模型化处理。目前有两种建模方式:矢量模型和栅格模型。 对地图数据进行加工后,整个地图制作就基本成型了。地图厂商需要将做好的地图进行实地测试,保证地图的完整性和可靠性。最后这些原始地图数据在相关部门做保密技术处理和审查。通过审查后,电子地图就可以公开的在网上发布或者销售。至此,整个地图制作过程基本结束。
5. poi数据导入arcgis为什么显示不出来
我推荐个迈高图
,集成26种地图源,100+地图图层。谷歌地球、谷歌地图、天地图、百度、腾讯、高德、360、超图、ArcGIS Online、BingMaps、MapQuest、OpenstreetMap。还有各种专题图:海图、2.5D城市地图、地表覆盖图、地质图、地形晕染等等。
还可以下载各种地图数据:卫星影像,DEM高程,路网、建筑轮廓等矢量数据,POI,最新行政区划。还可以在线地图标注标绘。
6. poi导入导出
首先要导入spring相关包,poi,和fileupload包,我是使用maven构建的。
一.导入excel
(1)使用spring上传文件
a.前台页面提交
<form name="excelImportForm" action="${pageContext.request.contextPath}/brand/importBrandSort" method="post" onsubmit="return checkImportPath();" enctype="multipart/form-data" id="excelImportForm">
<input type="hidden" name="ids" id="ids">
<div >
<div >
<label ><input id="excel_file" type="file" name="filename" accept="xls"/></label>
<div >
<input id="excel_button" type="submit" value="导入Excel"/>
</div>
</div>
</div>
<div >
<button type="button" data-dismiss="modal" onClick="uncheckBoxes();">取消</button>
</div>
b.后台spring的controller进行相关操作,这里主要讲的是使用spring上传文件,和读取文件信息。
使用spring上传文件之前,需要配置bean。
<bean id="multipartResolver" ></bean>@RequestMapping(value = "/importBrandSort", method = RequestMethod.POST)
public ModelAndView importBrandSort(@RequestParam("filename") MultipartFile file,
HttpServletRequest request,HttpServletResponse response) throws Exception {
String temp = request.getSession().getServletContext()
.getRealPath(File.separator)
+ "temp"; // 临时目录
File tempFile = new File(temp);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(10 * 1024 * 1024); // 设置允许用户上传文件大小,单位:位
fu.setSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:位
fu.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
// 开始读取上传信息
//
int index = 0;
/* List fileItems = null;
try {
fileItems = fu.parseRequest(request);
}
catch (Exception e) {
e.printStackTrace();
}
Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
FileItem fileItem = null;
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();// 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
fileItem = item;
// index++;
}
}
if (fileItem == null)
return null;
*/
if (file == null)
return null;
logger.info(file.getOriginalFilename());
String name = file.getOriginalFilename();// 获取上传文件名,包括路径
//name = name.substring(name.lastIndexOf("\\") + 1);// 从全路径中提取文件名
long size = file.getSize();
if ((name == null || name.equals("")) && size == 0)
return null;
InputStream in = file.getInputStream();
List<BrandMobileInfoEntity> BrandMobileInfos = brandService
.importBrandPeriodSort(in);
// 改为人工刷新缓存KeyContextManager.clearPeriodCacheData(new
// PeriodDimensions());// 清理所有缓存
int count = BrandMobileInfos.size();
String strAlertMsg ="";
if(count!=0){
strAlertMsg= "成功导入" + count + "条!";
}else {
strAlertMsg = "导入失败!";
}
logger.info(strAlertMsg);
//request.setAttribute("brandPeriodSortList", BrandMobileInfos);
//request.setAttribute("strAlertMsg", strAlertMsg);
request.getSession().setAttribute("msg",strAlertMsg);
return get(request, response);
//return null;
}
代码中的注释部分是如果不使用spring的方式,如何拿到提交过来的文件名(需要是要apache的一些工具包),其实使用spring的也是一样,只是已经做好了封装,方便我们写代码。
代码中的后半部分是读取完上传文文件的信息和对数据库进行更新之后,输出到前台页面的信息。
上述代码中: InputStream in = file.getInputStream();
List<BrandMobileInfoEntity> BrandMobileInfos = brandService
.importBrandPeriodSort(in);读取excel的信息。
(2)使用poi读取excel
a.更新数据库
@Override
public List<BrandMobileInfoEntity> importBrandPeriodSort(InputStream in) throws Exception {
List<BrandMobileInfoEntity> brandMobileInfos = readBrandPeriodSorXls(in);
for (BrandMobileInfoEntity brandMobileInfo : brandMobileInfos) {
mapper.updateByConditions(brandMobileInfo);
}
return brandMobileInfos;
}
这部分是sevice层的代码,用于读取excel信息之后更新数据库数据,我这里是使用mybatis。定义一个类BrandMobileInfoEntity,用与保存excel表每一行的信息,而List< BrandMobileInfoEntity > 则保存了全部信息,利用这些信息对数据库进行更新。
b.读取excel信息
private List<BrandMobileInfoEntity> readBrandPeriodSorXls(InputStream is)
throws IOException, ParseException {
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
List<BrandMobileInfoEntity> brandMobileInfos = new ArrayList<BrandMobileInfoEntity>();
BrandMobileInfoEntity brandMobileInfo;
// 循环工作表Sheet
for (int numSheet = 0;
numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
brandMobileInfo = new BrandMobileInfoEntity();
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
for (int i = 0; i < hssfRow.getLastCellNum(); i++) {
HSSFCell brandIdHSSFCell = hssfRow.getCell(i);
if (i == 0) {
brandMobileInfo.setBrandId(Integer
.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 1) {
continue;
} else if (i == 2) {
brandMobileInfo.setMobileShowFrom(Integer.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 3) {
brandMobileInfo.setMobileShowTo(Integer.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 4) {
brandMobileInfo.setSellMarkValue(getCellValue(brandIdHSSFCell));
} else if (i == 5) {
brandMobileInfo.setWarehouse(getCellValue(brandIdHSSFCell));
} else if (i ==
- 相关评论
- 我要评论
-