获取OpenStreetMap数据方法知多少

获取OpenStreetMap数据方法知多少,第1张

一个城市的地图是很多仿真中常见的一个情况;我们需要首先获得想要得到城市地图的id号,之后用该id号去该城市地图;

通过 访问 OSM Overpass API query page(),在打开uery框中输入图中所示代码(在代码name处改城市名称);

之后,点击右下角uery,d出提醒,单击保存;完成后,以记事本方式打开该文件;

在打开的文件起始位置,找出城市的id号;

由以上步骤得来Hollywood的城市id号为;但从技术上来讲,这仅是该城市的边界,如果想得到城市的地图,我们需要在该id号基础上加3,600,000,000,得到id最终结果为;

然后,我们继续访问步骤二中的API query page,在打开uery框中输入以下代码(逗area-query ref=地的值是我们在上一步得到的值):

步骤阅读

之后,再次点击右下角uery,d出提醒,单击保存;完成后,以记事本方式打开该文件(此文件即Hollywood的城市地图数据),导入到仿真中使用即可;

#include<iostream>

#include<string>

#include<map>

usingnamespacestd;

intmain()

{

multimap<string,int>m_map;

strings("中国"),s1("美国");

m_mapinsert(make_pair(s,50));

m_mapinsert(make_pair(s,55));

m_mapinsert(make_pair(s,60));

m_mapinsert(make_pair(s1,30));

m_mapinsert(make_pair(s1,20));

m_mapinsert(make_pair(s1,10));

//方式1

intk;

multimap<string,int>::iteratorm;

m=m_mapfind(s);

for(k=0;k!=m_mapcount(s);k++,m++)

cout<<m->first<<"--"<<m->second<<endl;

//方式2

multimap<string,int>::iteratorbeg,end;

beg=m_maplower_bound(s1);

end=m_mapupper_bound(s1);

for(m=beg;m!=end;m++)

cout<<m->first<<"--"<<m->second<<endl;

//方式3

beg=m_mapequal_range(s)first;

end=m_mapequal_range(s)second;

for(m=beg;m!=end;m++)

cout<<m->first<<"--"<<m->second<<endl;

return0;

}

扩展资料

map构造函数;

map<string,int>mapstring;map<int,string>mapint;

map<sring,char>mapstring;map<char,string>mapchar;

map<char,int>mapchar;map<int,char>mapint;

如在打枚举中打印“指定值对应的字符串”时,可是采用map<int,string>的STL实现。

Set<Object> keySet = mapkeySet();//获取map的key值的集合,set集合

for(Object obj:keySet){//遍历key

Systemoutprintln("key:"+obj+",Value:"+mapget(obj));//输出键与值

}

1Child类根据前面输入的三个参数,即tasktracher的地址、端口、taskid。通过TaskUmbilicalProtocol协议,从TaskTracker获得需要执行的Task,在Child的main函数中调用执行。

2 在Chilld中,执行Task的run方法。Task 的run方法。是真正执行用户定义的map或者reduce任务的入口,通过TaskUmbilicalProtocol向tasktracker上报执行进度。

3 在MapTask的run中执行runMapper方法来调用mapper定义的方法。

4 在runNewMapper方法中构造mapper实例和mapper执行的配置信息。并执行mapperrun方法来调用到用户定义的mapper的方法。

5 mapper的run方法中,从输入数据中逐一取出调用map方法来处理每一条数据

6 mapper的map方法是真正用户定义的处理数据的类。也是用户唯一需要定义的方法。

java 获取map中所有的key和value值

javautilIterator 对 collection 进行迭代的迭代器。

javautilIterator it = mapentrySet()iterator();

while(ithasNext()){

javautilMapEntry entry = (javautilMapEntry)itnext();

entrygetKey() //返回对应的键

entrygetValue() //返回对应的值

}

以前遍历Map key-value比较习惯的方式是先获取Map中的所有key值,

然后根据key,依次从Map中去数据,基本方式如下:

Map<String,String> testData = new HashMap<String, String>();

Set<String> keys = testDatakeySet();

for(String key :keys){

Systemoutprintln(key+" "+testDataget(key));

}

上述其中是第一种方法,原来一直用上述方法主要是自己有点懒,有了一种方法后就觉得够用的了,今天看源码,发现还Map接口中还有一个Entry<K,V>的接口,对应的还有一个 Set<MapEntry<K, V>> entrySet();方法。

也就是说其实Map中的每条key-value数据对应着一个Entry,这样的话遍历Map其实就是要取出每个Entry,也就有了第二种遍历方法:

Set<Entry<String, String>> entries = testDataentrySet();

for (Entry<String, String> entry : entries) {

Systemoutprintln(entrygetKey()+":"+entrygetValue());

}

当少量的数据时,上述两种方法的效率是差不多的,当数据比较多时,第二种还是要比第一种快。

当然上述说的两种遍历针对的情况是遍历出key-value,如果是只想遍历key或value,大可不必用以上的方法了,Map中提供了Set<K> keySet()和Collection<V> values()。

以上就是关于获取OpenStreetMap数据方法知多少全部的内容,包括:获取OpenStreetMap数据方法知多少、c++ 输出map每个元素的值、java语言如何循环读取Map对象内的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9724411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存