继续请教开发漂亮的 GIS 程序的方法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
nonesuccess

继续请教开发漂亮的 GIS 程序的方法

  •  
  •   nonesuccess May 13, 2017 4476 views
    This topic created in 3270 days ago, the information mentioned may be changed or developed.

    之前在: t/341025 中扫了扫盲,研究了许久后,下面几个方案都搞通了:

    • 用百度或者高德 map api
    • 爬来百度或高德或谷歌的瓦片图扔到服务器上再用 openlayers 的 xyz 方法显示
    • 淘宝上买 shp 格式地图资源,用 geoserver+openlayers 显示

    在线 api 是最方便的,但存在以下问题:

    • 有场景是针对某个建筑物进行管理,需要放大缩小至该建筑物占满屏幕大部分,在线 api 的放缩级别不够
    • 同上一条,在线 api 的楼宇细节不够(我们的目标地点是某八线县城,百度或高德上的建筑信息都很不全)
    • 在线 api 提供的定制型不够,比如想细致的调整配色,或者显示一条闪烁的箭头之类的,都没找到相应的方法
    • 领导的意思是要把地图做成系统的亮点,因此要漂亮、细致。参考 E 都市,风格不要 3d 的,但是漂亮程度要接近。

    所以后面想研究的方向是自建地图,有下面几个想法:

    爬百度或者高德的地图资源,用 openlayers 显示,再叠加网上购买的 shp

    存在的问题是,两个地图的坐标叠不上,差十几米的样子。想请教大家,能否解决,解决的话,应该 1、调整瓦片图 2、QGIS 或人肉改 shp 3、在 openlayers 中通过某个方法调整两个图层的坐标差?

    前两种方法都感觉太笨了,理论上第三种最靠谱,但翻了翻 openlayers 的文档,愣是没找到。

    自己画地图

    网上买 shp 即便是能叠加上,但还是比较难看,所以在考虑是否自己画地图的方案更靠谱。

    我们要管理的范围,第一批大概不超过 100 平方公里,居民区不超过 100 个,我们手里有所有建筑的 cad 图。

    如果我去找那种做小区平面设计图的人,把 cad 图给他们,让他们按照我们要求的风格画出图,然后写个程序切出瓦片图(对一个端点或两个端点的坐标就能保证矩形的所有点坐标都是对的?)。之后架一个 GIS 数据库,人肉把每个建筑物的坐标点量出来,存到数据库里(按照 100 个小区,每个小区 100 个建筑物算,大概是个 100~200 人天的体力活),这样建筑物的信息也都有了,鼠标指向后的高亮效果也实现了,基本上满足了我们的所有要求。

    之后的需求,无非是根据 GPS 坐标在图上标记一些点位,如果地图都是我们自己画的话,和 GPS 坐标的偏移问题应该也能很简单的解决吧。

    这个方案靠谱吗?

    如果不完全靠谱的话,是否可以通过底图+shp+重点区域用以上方法绘制的结合方法?如果可以的话,要解决 1、坐标偏移问题、2、底图用谁的 3、shp 是否能简单的编辑,比如人肉画一片区域出来

    写得有点乱,主要是对 GIS 还没有系统性了解,都是查到的各种野路子凑上去。

    11 replies    2017-06-22 20:34:36 +08:00
    lyog
        1
    lyog  
       May 13, 2017 via Android
    你可以百度一下 arcgis 空间校正,看看是不是你想要的功能
    lyog
        2
    lyog  
       May 13, 2017 via Android
    or arcgis 地理配准
    nonesuccess
        3
    nonesuccess  
    OP
       May 14, 2017 via Android
    @lyog 研究一下看看
    gooin
        4
    gooin  
       May 14, 2017 via Android
    地图坐标重叠不上应该是投影问题。如果投影一致的话用 ArcGIS 校准一下就行,不过手动校准或多或少都有点小小的误差。
    参观过某大数据局,他们是在网页端 2.5D 展示整个城市,点击每个建筑会显示建筑内住户信息什么的。我问了他们是怎么做的,他们说楼下一层人都是干这个的,三维建模,地图绘制之类的。供楼主参考
    nonesuccess
        5
    nonesuccess  
    OP
       May 14, 2017
    @gooin @lyog

    如果要用 arcgis,要买授权吗,还是说有试用版的可以用?我们初期就调整这一点的东西就行了
    lyog
        6
    lyog  
       May 14, 2017 via Android
    @nonesuccess arcgis 是付费软件,而且炒鸡炒鸡贵,有个被 arcgis 甩 n 条街国产软件 supermap,前三个月试用。对付这个简单的功能还绰绰有余。
    gooin
        7
    gooin  
       May 14, 2017
    ![2.5dcity.png]( https://ooo.0o0.ooo/2017/05/14/5917ba3de681e.png)
    不知道楼主是不是需要这样的东西
    nonesuccess
        8
    nonesuccess  
    OP
       May 14, 2017
    @gooin 差不多,但是我们不需要这个透视效果,视角在正上方看平面图就行
    phobal
        9
    phobal  
       May 14, 2017
    1、如果没理解错的话你目前最大的问题就是怎么将你从百度或高德抓的瓦片数据和你在淘宝买的 shp 数据进行小偏差的叠加,首先你要弄清楚你买的 shp 数据的坐标系是什么(这个可以将 shp 文件导入到 ArcGIS 等软件中查看属性查询到),然后明白高德或者百度瓦片数据的坐标系,然后可以通过 ArcGIS 将其转正相同的坐标,这样就能在地图中正常显示了。
    2、如果你不用你买 shp 的话,直接画 CAD 同样可以在 ArcGIS 中将其导出成 shp 格式,然后可以使用 ArcGIS 全家桶中的 ArcGIS Server 将 shp 发布成地图服务,然后使用 ArcGIS for JS API 去调用服务,这样做的话你说的需求基本都全能实现,只是这种方案学习成本比较高。
    如果还不懂的话可以发邮件问我 [email protected]
    swim2sun
        10
    swim2sun  
       May 15, 2017
    百度或者高德的坐标系不是国际标准的,是经过加密的,在 openlayer 上应该是没有对应的坐标系的,所以你怎么调都是会有问题的。你可以使用开源的 openstreemap。另外如果想做漂亮的地图,也可以了解下 mapbox。
    About     Help     Advertise     Blog     API     FAQ     Solana     1003 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 23:02 PVG 07:02 LAX 16:02 JFK 19:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86