首先这个教程整理,比较偏细节。

因为我本身不是做GIS,所以可能有点流水账,当然错漏难免,恳请指正。

当我们做定位的时候,想要可视化展示,室外当然可以直接使用google,百度的底图。对于室内,有两种方法:

1.单独可视化展示可以直接通过简单的底图jpg图片进行,只需要实现jpg像素坐标到你定位坐标的转换即可。

2.如果还想要想要室内的map matching, 甚至想要路径规划(导航)都需要矢量地图生产了发布了。

本文这里只讲比较简单的基于ArcMap/ArcServer(英文版)的实现方法和流程,如果你要设计室内地图的规范化,标准制定,请移步indoorGML.

当然,这里假设一些基本的arcmap基础你有,不然一步步的讲解的话就太多了。

1.CAD------>SHP

首先,一般的室内地图我们可以通过CAD的设计图来进行转化成想要的底图背景。

  有自定义坐标系的建筑设计cad图,但是和全校底图不在一个坐标系下。
 
步骤:
1.利用cad图导出成shp文件:
            a.polyline 放进工作区
            b.data->export(layers coordinate system.)
            c.在geodatabase中import该shp, start edit and spatial adjust.
2.调整你想要的室内图到某个底图(google baidu底图或者校园地图这种上去)
     a.打开shp文件和底图文件 (如果看不到可以new a map document 再拖进去)
     b.利用arcmap的Spatial adjustment工具里的displacement link tool 来链接同名点。
       (先点击待转换的点,连接到目标点上去,多利用zoom to layer)
     c.均匀布设 控制点,然后点击adjust 进行转换。

2.通过ArcServer 发布导航服务

2.1概述

  有了大概的cad底图,但是并没有我们想要的路径分析,道路信息等。为了实现道路map matching 或者navigation,需要发布map server(network analysis)服务。
  1.利用arctmap画图并生成网络数据集(newwork dataset),然后利用arcmap的network analyse分析验证路算
  2.发布网络数据集到arcgis server 上面即可。

2.2生产:

   1.在文件目录下面新建“文件地理数据库”test

   2.在test建立要素数据集testset,坐标系选择Project(投影坐标系)(比如UTM 的WGS84-North N36)

        3.在testset里面建立需要的要素类比如road toilet(画图) 画图的时候注意比例尺,否则太大。
        4. arcmap上面空白右键点击network analyst功能 
        5.在testset新建网络数据集(如果是灰色则需要在自定义拓展模块中激活network Analyst)
        6.网络数据集创建的时候不能选point 只选择road 否则会提示创建有错误并生成error(代码16 “交汇点未连接到任何其他边要素。” )
      
 
  notice:  
           1.在生成数据集的时候,连通性设置为所有节点或者是端点  如果是端点需要打断不然路算绕远(connectivity项)。交接点也需要打断 不然走不通。(no route found)
           2.如果导航需要方向至少需要(https://desktop.arcgis.com/zh-cn/arcmap/latest/extensions/network-analyst/setting-directions.htm):
  • 具有长度单位的长度属性(有坐标系就ok)
  • 至少有一个边源
  • 边源上至少有一个文本字段(导航的道路名)(新增字段要在目录下选择属性, 新增完后编辑会显示不可用的字段,重启。。。)
  • 一条路多线段先画成一起写了属性再打断会带有属性,可以利用高级edit的批量打断。
           3.导航信息中 如果是一条路(上文的文本字段)则不提示转向(哪怕角度很大 只会计算该路段的起点终点的方向,例如一个直角路是一条路,可能直接说沿着东南路方向行驶,所以需要分成两段,road名字设置成一样)   WGS84 可设置成显示decimal degree 并在custom中设置小数位(如果地图小)
 
 

2.3发布网络分析服务

 
  可能遇到的问题:
1.发布服务后通过web测试你的服务http://your_ip:6080/arcgis/rest/services/MyMapService/NAServer/Route,测试方法见api: http://resources.arcgis.com/en/help/rest/apiref/
                    
2.通过http://your_ip:6080/arcgis/manager/service.html?name=MyMapService.MapServer管理服务
 
3.6080ip被防火墙封掉的问题,需要安装web adaptor(在server包里)然后通过访问web adaptor来访问你的服务,即测试你的服务的地址变为http://your_ip/webadapter/rest/services/YourMapService/NAServer/Route                                         

3.  在终端Android(web)中使用你的网络服务:

      2.github 上面看esri的相关sample code.
 
本文只是介绍了如何从CAD----->Map, 因为arcgis 本身的network analysis暂时并未提供室内三维空间的导航。
所以如何通过arcgis的二维路径分析进一步实现室内三维导航呢?具体的思路将在下一篇文章中介绍。

室内地图1:从CAD到Map(画图,发布,路径导航)的更多相关文章

  1. Android中Google地图路径导航,使用mapfragment地图上画出线路(google map api v2)详解

    在这篇里我们只聊怎么在android中google map api v2地图上画出路径导航,用mapfragment而不是mapview,至于怎么去申请key,manifest.xml中加入的权限,系 ...

  2. 如何使用JS来开发室内地图商场停车场车位管理系统

    在线体验到室内地图的功能后,手机对室内地图加载一个字,要显示“快”,目前微信和电脑都可以打开室内地图的要求是3秒内打开,能有定位导航的功能最好,这样方便找到要去的地方. 对于经常逛商场的MM来说,哪里 ...

  3. 高德地图 室内地图 API 的一些坑

    开发指南 http://lbs.amap.com/api/javascript-api/guide/create-map/indoormap/ demo 大全: http://lbs.amap.com ...

  4. 微信小程序室内地图导航开发-微信小程序JS加载esmap地图

    一.在微信小程序里显示室内三维地图 需要满足的两个条件 调用ESMap室内地图需要用到小程序web-view组件,想要通过 web-view 调用ESMap室内地图需要满足以下 2 个条件: 1. 小 ...

  5. 支付宝小程序室内地图导航开发-支付宝小程序JS加载esmap地图

    如果是微信小程序开发,请参考微信小程序室内地图导航开发-微信小程序JS加载esmap地图文章 一.在支付宝小程序里显示室内三维地图 需要满足的两个条件 调用ESMap室内地图需要用到小程序web-vi ...

  6. ZTMap室内地图定位平台设计方案

    1   系统总体设计 1.1  系统概述 基于臻图信息室内GIS地图平台和室内定位平台,通过室内定位设备的部署和信号采集,实现对室内人员和资产的实时定位.路线导航.区域管控告警.客流统计等相关功能. ...

  7. 【百度地图API】如何制作自定义样式的公交导航结果面板?

    原文:[百度地图API]如何制作自定义样式的公交导航结果面板? 摘要: 百度地图API有默认的公交导航结果面板,但样式比较单一:而百度地图上的结果面板就比较美观.如何利用百度地图API来制作一个比较美 ...

  8. 【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  9. 百度地图 Android SDK - Hello Baidu Map

    例如,给广大以下主要开发者介绍了如何使用百度地图Android SDK构造的主应用程序的地图! 第一步.创建Androidproject,将百度地图Android SDK的开发包导入到project对 ...

随机推荐

  1. uploadify 配置后,页面显示无效果

    uploadify使用的是Flash版本 谷歌浏览器:默认没有开启Flash,进行如下图设置即可

  2. linux学习(八)chmod、chown、umask、lsattr、chattr

    一.权限位 权限位分为两个部分,第一个部分是谁的权限,第二部分是权限是多少.其中第一个部分一般分为:用户,用户组,其他用户.第二部分分为r:读权限,w:写权限,x:执行权限.可读,可写,可执行的权限, ...

  3. nova创建虚拟机源码分析系列之六 api入口create方法

    openstack 版本:Newton 注:博文图片采用了很多大牛博客图片,仅作为总结学习,非商用.该图全面的说明了nova创建虚机的过程,从逻辑的角度清晰的描述了前端请求创建虚拟机之后发生的一系列反 ...

  4. Android 开发笔记___SD卡基本操作

    package com.example.alimjan.hello_world; /** * Created by alimjan on 7/5/2017. */ import android.ann ...

  5. Matrix 矩阵

    CSS3中的矩阵指的是一个方法,书写为matrix()和matrix3d(),前者是元素2D平面的移动变换(transform),后者则是3D变换.2D变换矩阵为3*3, 如上面矩阵示意图:3D变换则 ...

  6. 前端框架:react还是vue?

    之前写了一篇前端框架的大汇总,主要介绍了当下主流的框架和其特性.最近除了bootstrap,就属react和vue最为热门,这篇就主要拿这两个框架来做一下详细对比. 究竟如何正确使用?作为小白的我们从 ...

  7. 设计模式的征途—7.适配器(Adapter)模式

    在现实生活中,我们的笔记本电脑的工作电压大多数都是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够工作在220V的电压下工作?答案:引入一个电源适配器,俗称变压器,有了这个电源适配器, ...

  8. 其他信息: ORA-01400: 无法将 NULL 插入

    这个错误其实就是oracle数据库的某列约束为 not null,但在插入值的时候插入了控制,无论是null和"",它都识别为空 有两种方法: 1.修改数据库字段约束为允许为空 2 ...

  9. css3 ajax加载进度线

    最近想了想ajax加载时的进项,便着手写了这个,我想css3的支持度已经够了 <button onclick="start()">button</button&g ...

  10. 照虎画猫写自己的Spring——依赖注入

    前言 上篇<照虎画猫写自己的Spring>从无到有讲述并实现了下面几点 声明配置文件,用于声明需要加载使用的类 加载配置文件,读取配置文件 解析配置文件,需要将配置文件中声明的标签转换为F ...