关于

资深GIS初学者
其实我不老

102 thoughts on “关于”

  1. james

    你好,问下,我在Arcgis api for silverlight中做点缓冲区是,调用GP服务,当点只有几个时可以正常运行,当点有十几个时就会出现异常,问下,这是由于什么导致的呢?有人说要把请求方式改为POST,但请求的那句就只有new Geoprocessor(url),也没有地方来设置请求方式的啊,诚望赐教!

    1. diligentpig

      你好,silverlight api中的taskbase类中,发送请求时会自动在get和post之间进行转换,如果请求长度超过2048字节,会自动转成post方式,否则为get方式。所以你的问题应该不在这里。

  2. panda

    您好,我刚刚看到了您的这个demo:http://newnaw.com/pub/sl/googlemapvsbingmap.html
    我现在在做个项目,也需要arcgis与google maps结合,想请问下您这个底图用的google api还是扩展了arcgis api?如果是扩展的arcgis api,请问下如何做到的地名定位?

    非常非常感谢!

        1. diligentpig

          arcgis mobile中没有提供任何方法或框架去扩展一个类似切片的图层来显示自己的数据。(这有一个显示第三方服务的例子http://resources.esri.com/help/9.3/ArcGISmobile/adf/LiveTraffic_PPC05NET.htm)
          除非你将自己下载好的google地图按照arcgis server切片的规则重新组织,然后用arcgis mobile10来加载。
          推荐考虑使用arcgis api for ios/android/windows phone,后者能轻松办到。

        2. xduoo

          哦 现在客户条件只能用 windows mobile 不能用windows phone,看来真没有办法了 看到别人用开源的GMap 可以加载google map 不知道老王搞过没

          1. xduoo

            GMap.NET is great and Powerful, Free, cross platform, open source .NET control. Enable use routing, geocoding and maps from Coogle, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac, Yandex, Mapy.cz, Maps.lt, iKarte.lv, NearMap, OviMap, CloudMade in Windows Forms & Presentation, supports caching and runs on windows mobile!
            http://greatmaps.codeplex.com/
            我是在这里看到的

  3. chgisly

    老王,这样叫你不介意吧?呵呵,我是一位大四的GIS学生,目前在做毕业论文,关于wp客户端开发。有一些不懂的东西,不置可否与你同邮件?如有看到,望回复。

      1. chgisly

        我在使用ESRI Online rest地图服务时发现放大一定倍数地图就无法使用,我试着找其他办法如使用google地图,但是我发现使用google地图后,我不会加载本地rest的服务了……(我没有查找到相关的资料)希望你可以帮助我。同时,本地发布rest服务有多个图层,我希望可以全部使用,rest地址怎么改?把0改成layer吗?不行……望回复。打扰你了,谢谢

        1. diligentpig

          很抱歉,你说的两个问题我都没太明白。arcgis online上发大一定倍数无法使用是什么意思?有的地方会显示map data not available,但服务是正常的,只是那没数据。不管你本机有几个服务,是否使用了google地图服务,都是可以按你的需求随意加载的。

  4. moonmilo

    你好~我在使用server时遇到一个问题,就是可能因为framework,iis以及arcgis server的安装顺序不一样,导致现在manager打得开,但是services directory打不开,所以地图发布之后,都不能浏览;通过网上查找解决方案,发现可以使用ADFUtil.exe来解决,但是我进入cmd输入adfutil -registerservices moonmilo 80之后,完全没有反应,我想知道正确的解决方法,非常感谢~

    1. diligentpig

      一般不需要使用adfutil.exe来解决问题,除非你完全明确知道自己正在准备做什么。
      推荐按照正确的顺序重新安装:.net framework->iis->arcgis server。注意,vista/win7/2008系统对iis有特殊要求,请参看帮助,10版本之前在64位系统上安装对iis有特殊需求,请参考我之前的文章。

  5. HY

    您好,我想问一下,我是在flex框架下开发,在config.xml文件中,我的一个operational layer显示的颜色太淡,我想要修改颜色,可不可以通过xml配置文件修改啊?还是必须从发布这个图层的url源头那里修改?

    1. 菩提老王 Post Author

      这个取决于你的operational layer的呈现方式是什么?如果是以动态地图服务的形式加载进来的(服务中的一个子图层),则渲染是又服务器端决定的,客户端就无法操控,必须在mxd中改;如果这个图层是以graphicslayer方式加载的,那么可以通过修改客户端的渲染/符号来达到你的目的。flex viewer不太熟,你得在查查能否通过xml配置文件来修改graphicslayer的渲染了。

      1. 良民

        老王经过一番摸索,我发现在Flex API中 graphicslayer.addChild()方法里这个child可以使任何继承自displayobject的对象,某种程度上讲可以当做ElementLayer用

    1. diligentpig

      不知道你需要以什么形式调用。两个思路:
      1、soap api:
      http://services.arcgisonline.com/ArcGIS/sdk/soap/SOAP_Map_ExportMapImage.htm
      其中mapdescription上可以添加CustomGraphics,即可实现你的需求;
      2、自己封装一个service,其中第一步调用rest api的export操作出图,第二步计算出你需要添加到点或线在已出图片内的相对坐标,自己把点和线画上去,最终给客户端返回你想要的结果。

    1. diligentpig

      如果你只得是pbs里自定义数据源的话(可以去pbs的页面留言),可以把连接串里的hl=zh-CN改成hl=zh-TW,但这样好像只会在使用繁体中文的地区显示繁体中文,大陆仍然是简体

  6. Ludwig

    您好,想请教个问题。要在Windows CE下做二次开发,很多东西不了解,ArcGIS Mobile能够满足读取和编辑shp文件的要求吗?如果是加载离线缓存可以进行编辑吗?如果不能有什么办法实现呢?谢谢!

    1. diligentpig

      如果你确定系统是wince,要使用arcgis mobile产品的话,理论上只要能找到.net compact framework支持的读写shape文件的库,就可以直接对shape文件进行读写操作;如果找不到,建议还是通过gp工具,将shp导入arcgis mobile的离线缓存格式,然后进行操作,在将结果同步出来。
      arcgis mobile对自己的缓存格式完全支持读写操作,支持同步。

          1. ravenjam

            用arcmap很快啊,打开过图层什么的也没有问题。我这里的很慢是指直接把程序放在服务器上跑,因为本来网段不同。不过结果速度还是很慢,真的不知道什么原因了。

    1. jhzhao

      我碰到这个问题,是操作系统不知道哪里有问题,哪怕新装的系统也不行,换了一个版本的操作系统重装,就好了。

  7. 阿良

    您好!慕名来到这里,有个关于Silverlight API 调用GP服务的问题,想请教您,还劳烦您点拨。异步调用GetResultDataAsync的完成事件中,e.Parameter为空,应该是gp服务执行不成功的原因,出现这个问题是什么原因?具体要怎么解决呢?期待您的回复。

  8. jhzhao

    老王,我用pbs下的web地图,再发布服务,发现跟自己的地图坐标有少许偏差,而直接调用这两个地图是没有这个偏差的。你看看是什么原因呢?

    1. 菩提老王 Post Author

      你的意思是,自己有一个图层的地图数据,如果和在线地图做数据源的pbs服务叠加没有误差,如果和下载好的mbtiles做数据源的pbs服务叠加就有误差?如果是的话请告之一下在线地图的地址,我这边测试一下。

      1. jhzhao

        不是这个意思,我测试的是google影像,pbs这两种方式调用叠加是没有问题的,但与我自己的数据叠加有一两百米的偏差。
        但我在arcmap中用ArcBruTile插件同样在线调用google影像,与我自己的数据叠加却非常吻合,奇怪了,会是什么原因?

          1. jhzhao

            arcbrutile可能对google影像进行了纠偏处理。这些公开数据坐标系都有偏移。
            老王,哪里有这样的工具,把arcgis瓦片镶嵌导出tif格式?比如我划定一个区域,要15级瓦片合成一个geotif文件。

          2. jhzhao

            嗯,他的好像也不支持自定义的,他们都是支持自己下载的格式。

  9. Alex

    请教个问题:想在silverlight下,将Symbol转换成图片,以作为图例使用,但找寻了半天,只发现用AE做转换的例子,而且在silverligh 下使用不了的。我想问下,如何将symbol转换成图片,或者是否有更好的方式?求指教,谢谢

    1. 菩提老王 Post Author

      symbol变图片,要么自己手工截图,要么用图片做symbol。如果symbol变了岂不是要重新截图?所以图例的根本思路是动态生成才对,参考http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#LegendSimple和http://resources.arcgis.com/en/help/silverlight-api/apiref/ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.GraphicsLayer~QueryLegendInfos.html

  10. 橙子

    请教王老师,我下的移动端离线地图的工程代码有个错误,就是自定义的OfflineableTiledMapServiceLayer类中重写的GetTileSource方法无效,因为所继承的ArcGISTiledMapServiceLayer中的这个方法是sealed封装的,所以会报错,这个怎么解决呢

  11. 橙子

    王老师,还有就是,有什么新的资料,我看的是基于silverlight3.0的wp开发,感觉比较旧了,好像有很多功能可以更简单高效的实现

    1. diligentpig

      新资料就是msdn上wp的新帮助和esri网站上新的api帮助。
      不管什么版本,原理都是相通的,如果你掌握的具体原理,也就不需要什么所谓新的资料了。

  12. Duncan

    王老师你好 我是一名土木工程交通工程毕业的学生。

    我现在主要的工作是进行一些交通体系的研究,这包括了对各大城公交系统的数据的搜集。我知道像baidu和google地图内已经有了现成的数据,但我不懂编程所以我根本不知道怎样可以批量提取这些数据在把它们转换到Arcgis的shapefile来使用。

    本人对编程还有此类的内容一窍不通,一点都不会javascript也不会任何与编程相关的内容。但由于现在工作的需要,我开始体会到必须要在这方面有哪怕是一丁点的了解。

    我偶尔上网查找信息的时候读到你的一篇“GIS中公交数据的下载和处理”的博文,发现这可能是解决我现在工作困难的最佳方法,但我不清楚的是像我这样一个从未学习过编程的人如果要掌握这方面的内容,并且能够做到从baidu或google当中提取数据并应用到自己电脑中的arcgis,将会需要学习哪些方面的内容,以及这些内容大概需要一个什么样的时间来学习?

    谢谢你的帮助。

    邓肯
    深圳

    1. diligentpig

      首先说明一点,百度没有授权将这些公交数据用做任何地方,“GIS中公交数据的下载和处理”一文中只是做测试。
      向你所说,需要通过js接口去调用并获得这些数据。但上文里已经将这个过程进行了封装,里面有无需编程就可获得数据的步骤和工具,仔细查看应该就能按照说明得到你想要的结果。

  13. wang

    您好,我是一个初学者,我想问一下,目前Flex使用百度API能离线加载百度地图吗,我已经使用ArcGIS API实现了百度地图的离线加载

    1. 菩提老王 Post Author

      百度地图我没研究过,如果你用arcgis已经实现的话,其他api原理应该都是一样的。

  14. GISer

    你好王老师,您的离线图层工程我转到了我的wp8工程中,继承自TiledMapServiceLayer,添加了Url属性和GetTileUrl方法,并在地图加载事件中调用GetTileSource方法,请问这个方法的Action onComplete 的参数要怎么赋值。编译程序出现:类型“System.Windows.DependencyObject”在未被引用的程序集中定义。必须添加对程序集“System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e”的引用,我添加您工程中对应的2.0.5.0的dll,找到对应位置,加到我的项目又成了4.0版,真心希望您的指点。

    1. 菩提老王 Post Author

      关于action,可以查查相应的c#编程资料,在理解的基础上再去写相关代码效率会高很多。至于编译的错误,是和你工程相关的,需要仔细检查,多搜索相关问题应该能得到解决。

  15. jhzhao

    老王,你的工具真的不错,再赞一个。
    现在有个问题是pbs下载的tiles全都是jpg格式的,原地图是png的,也会自动转为jpg的,能否在配置文件里指定下载png格式的tiles呢。

    1. 菩提老王 Post Author

      pbs目前下载的只能是mbtiles格式,里面存储的是原始的bytes,只是扩展名不一样。如果原来的切片本身是png,你只要把从mbtiles里导出的图片扩展名改成png就可以。
      不过在线地图即使是png格式,作为底图来看也是不透明的吧?

  16. jhzhao

    好的,明天我试一试,很多在线地图是多层合并显示的,比如影像和标注分两个图层,我只下载其中的一层,看原始png片子应该是透明的。pbs好像也只能这样下,能否把多层合并下载,就像MAC那样?

    1. 菩提老王 Post Author

      你说这个功能也有别的网友提到了,打算在下个版本中加入:)但最近较忙,需要等一段时间

    1. 菩提老王 Post Author

      7.5后的sdk模拟器中已经自带该工具了。之前的介绍在这http://blogs.windows.com/windows_phone/b/wpdev/archive/2011/01/28/windows-phone-gps-emulator.aspx,下载可到https://blog.newnaw.com/?p=832 评论处找到地址。

  17. wang

    你好老王,我现在想实现一个功能,先加载一个切片底图(使用ArcGIS切片服务),再加载一个行政区的服务(自己的服务),通过指定行政区名称过滤行政区图层只显示该行政区范围内的数据,我现在基本理解索要实现功能的意思,但是不知道具体应该用什么去实现,你能指点一下吗,谢谢了

    1. 菩提老王 Post Author

      “通过指定行政区名称过滤行政区图层只显示该行政区范围内的数据”,如果是显示行政区内的数据,那么显示的数据是否是单独的图层?这些数据是否有与行政区划关联的字段?具体怎么实现要看你做哪方面的开发?bs还是cs的?

    1. 菩提老王 Post Author

      python有源码,文章中有下载链接;silverlight程序的代码可以反编译查看,下载用的是百度的api,可以参考百度地图公交部分的api。

  18. hhxi

    老王您好,请教个关于使用PBS将Google地图生成mbtiles数据的一个问题。我在Chrome里面使用开发者工具定位一个切片比如是12,3398,1662(level,col,row下同),使用PBS下载后,在mbtiles中相应图片信息就变成了12,3398,2433。使用了您推荐的MOBAC,也出现了同样的问题。请教下您对于这个问题,有没有什么好的建议,我该从哪些可能的入口入手去解决?谢谢

    1. hhxi

      更新:下载了PBS的源码研究了一宿,终于找到我问题的原因了,原来我对Google Tile和TMS Tile的基础知识没搞清楚,一个是从左上角开始,一个是从左下角开始的,了解了这些,调整过我的代码就OK了。感谢PBS,感谢老王。

  19. jhzhao

    老大,程序下载切片的时候以及cache转换mbtiles的时候经常会莫名其妙出现index was out of range的错误,有时候区域并不大也这样。

    1. 菩提老王 Post Author

      最新版本有日志,看看日志里有没有什么信息?如果没有的话,你那有能重现问题的数据么?可以发过来我看看

  20. bjwgf

    王老师您好。我有个GIS的问题想请教一下,我有两个不同比例尺的切片。一个4百万,一个10万。我想在缩小到4百万的时候两个图层都用切片显示出来,请问有什么好的建议吗

    1. 菩提老王 Post Author

      暂未收到。建议可将问题发在https://geopbs.codeplex.com/workitem/list/basic,这样其他朋友也可以看到,一起讨论

  21. mortal77

    那个地址不会弄,呵呵,还放这里啦,
    下面的实例,请试一试

    tianditu_anno

    png
    0,1,2,3,4,5,6,7

    tianditu_map
    png

    0,1,2,3,4,5,6,7

    我作为单图层用,没有问题,但放到多图层里面,死活都不行。

  22. mortal77

    “那个地址不会弄,呵呵,还放这里啦,
    下面的实例,请试一试

    tianditu_anno

    png
    0,1,2,3,4,5,6,7

    tianditu_map
    png

    0,1,2,3,4,5,6,7

    我作为单图层用,没有问题,但放到多图层里面,死活都不行。”

  23. djt1220

    请问一下,我用silverlight rest export输出地图图片有尺寸大小的限制,3000*3000,这个参数怎么修改啊,很着急啊,谢谢!

  24. WJ

    你好,您能解释一下arcgis是怎样做切片的吗。我们有1个T的数据,用Geotools来渲染分割成天地图的瓦片光是17层就用了两天。但是我的一个同学说他们用arcserver不到一天就完成。我很好奇是怎么做到,怎么才能缩短时间,谢谢。

    1. 菩提老王 Post Author

      如果是全国范围17级,哪个工具目前都不可能在一天完成的。arcgis server切图时是先渲染4096*4096的大图,然后切割成特定宽高的切片,大致是这样。

      1. WJ

        非常感谢。不是全国只有一个省而已。另外,我用Geotools渲染大图很慢,将近60%的时间。我想arcgis的渲染程序应该是C++开发的,以你的经验,会否应为这个比Java的程序快。

        1. 菩提老王 Post Author

          渲染大图是最耗时的,没错,arcgis也是这样;c++应该会比java快,但在渲染大图上不至于有质的区别。很可能是你同学的说法不准确,如果有条件的话在arcgis上用同样数据测试一下就知道了:)

  25. holinz

    因为继承使用tiledmapservicelayer的原因,想要动态加载指定图层的图例,其他图例不需要。
    请问 我从dynamic legend的dynamiclayers传入指定图层的参数后可以得到图例,rest结果页面是需要的图层的图例 但是怎么把这个图例加到legend控件中呢,看帮助貌似这个rest返回结果是个imagedata吧 如果我使用webclient获取得到的结果是string,实际类型应该是什么呢 如果是legend的layeritem对象就好了 但也存在怎么从json转换为该对象呢?谢谢!
    【上面的图例这个话题,我也看了:
    http://resources.arcgis.com/en/help/silverlight-api/apiref/api_start.htm?ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.LayerLegendInfo.html】

Leave a Reply to 良民 Cancel Reply

Your email address will not be published. Required fields are marked *