一个城市的地图是很多仿真中常见的一个情况;我们需要首先获得想要得到城市地图的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对象内的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)