获取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的城市地图数据),导入到仿真中使用即可;

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()。

1、在对应的JavaScript文件中,定义一个Map数据结构变量m,并分别打印值和类型,如下图所示。

2、保存代码并运行,结果发现Map {}以及对象类型(Map是一种对象),如下图所示。

3、接着调用Map数据结构中的set方法,添加5个元素,其中有一个的key值重复了,如下图所示。

4、保存代码并运行,查看控制台打印结果,发现key-value值,如下图所示。

5、使用get()方法获取单个元素,传入的参数是key值。

6、最后保存代码并运行,可以查看到Map数据结构中的value值。

public static void main(String[] args) {

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

mapput("key1", "value1");

mapput("key2", "value2");

mapput("key3", "value3");

Set<String> keySet = mapkeySet();

int i = mapsize()-1;

Map<Integer, String> mapKey = new HashMap<Integer, String>();

Map<Integer, String> mapValue = new HashMap<Integer, String>();

for(javautilMapEntry<String, String> entry : mapentrySet()) {

//将原来MAP的VALUE放入新的MAP的VALUE里面

mapKeyput(i, entrygetValue());

//将原来MAP的KEY放入新的MAP的VALUE 里面

mapValueput(i, entrygetKey());

i--;

}

//打印KEY值

Systemoutprintln(mapKeyget(2));

//打印VALUE值

Systemoutprintln(mapValueget(0));

}

扩展资料:

java键值对的使用

Map集合没有继承Collection接口,但是其提供了key到value的映射。每一个key不能有相同,每个key只能映射一个value值。

下面通过一个程序来说明键值对的使用,下面是一个基本的键值对应用程序:

package Test;

import javautilCollection;

import javautilHashMap;

import javautilIterator;

import javautilMap;

import javautilSet;

public class KeyValue {

public static void main(String[] args) {

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

mapput("01", "张三");

mapput("02", "王五");

Set<String> set=mapkeySet();

Iterator <String> it=setiterator();

Systemoutprintln("key中集合元素:");

while(ithasNext()){

Systemoutprintln(itnext());

}

Collection <String> coll=mapvalues();

it=colliterator();

Systemoutprintln("value中集合元素:");

while(ithasNext()){

Systemoutprintln(itnext());

}

}

}

输出结果如图所示:

requestgetParameter()取到的是的id,

那是因为在html页面上<select>控件中的<option value=""></option>,

这里option的value你放入的值是id,把option中的value改成你要传的值就可以取到了。

不过在软件中数据传递,本来就应该是传id的,数据的引用也应该是id引用。你写到另一个表中的数据,应该是以id引用的方式,也就是外键引用。

以上就是关于获取OpenStreetMap数据方法知多少全部的内容,包括:获取OpenStreetMap数据方法知多少、java怎么获取map的key、c++/STL/map中怎样获取map中第i个元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存