add OSM datatypes
This commit is contained in:
parent
4f3560d810
commit
da53b02e8a
19
src/org/oscim/core/osm/Bound.java
Normal file
19
src/org/oscim/core/osm/Bound.java
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
public class Bound {
|
||||
|
||||
}
|
||||
55
src/org/oscim/core/osm/OSMData.java
Normal file
55
src/org/oscim/core/osm/OSMData.java
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright 2013 Tobias Knerr
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* OSM dataset containing nodes, areas and relations
|
||||
*/
|
||||
public class OSMData {
|
||||
|
||||
private final Collection<Bound> bounds;
|
||||
private final Collection<OSMNode> nodes;
|
||||
private final Collection<OSMWay> ways;
|
||||
private final Collection<OSMRelation> relations;
|
||||
|
||||
public OSMData(Collection<Bound> bounds, Collection<OSMNode> nodes,
|
||||
Collection<OSMWay> ways, Collection<OSMRelation> relations) {
|
||||
|
||||
this.bounds = bounds;
|
||||
this.nodes = nodes;
|
||||
this.ways = ways;
|
||||
this.relations = relations;
|
||||
|
||||
}
|
||||
|
||||
public Collection<OSMNode> getNodes() {
|
||||
return nodes;
|
||||
}
|
||||
|
||||
public Collection<OSMWay> getWays() {
|
||||
return ways;
|
||||
}
|
||||
|
||||
public Collection<OSMRelation> getRelations() {
|
||||
return relations;
|
||||
}
|
||||
|
||||
public Collection<Bound> getBounds() {
|
||||
return bounds;
|
||||
}
|
||||
|
||||
}
|
||||
58
src/org/oscim/core/osm/OSMElement.java
Normal file
58
src/org/oscim/core/osm/OSMElement.java
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright 2013 Tobias Knerr
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
public abstract class OSMElement {
|
||||
|
||||
public final TagGroup tags;
|
||||
public final long id;
|
||||
|
||||
public OSMElement(TagGroup tags, long id) {
|
||||
assert tags != null;
|
||||
this.tags = tags;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + (int) (id ^ (id >>> 32));
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
OSMElement other = (OSMElement) obj;
|
||||
if (id != other.id)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the id, plus an one-letter prefix for the element type
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return "?" + id;
|
||||
}
|
||||
|
||||
}
|
||||
35
src/org/oscim/core/osm/OSMMember.java
Normal file
35
src/org/oscim/core/osm/OSMMember.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2013 Tobias Knerr
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
public class OSMMember {
|
||||
|
||||
static final boolean useDebugLabels = true;
|
||||
|
||||
public final String role;
|
||||
public final OSMElement member;
|
||||
|
||||
public OSMMember(String role, OSMElement member) {
|
||||
assert role != null && member != null;
|
||||
this.role = role;
|
||||
this.member = member;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return role + ":" + member;
|
||||
}
|
||||
|
||||
}
|
||||
32
src/org/oscim/core/osm/OSMNode.java
Normal file
32
src/org/oscim/core/osm/OSMNode.java
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2013 Tobias Knerr
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
public class OSMNode extends OSMElement {
|
||||
public final double lat;
|
||||
public final double lon;
|
||||
|
||||
public OSMNode(double lat, double lon, TagGroup tags, long id) {
|
||||
super(tags, id);
|
||||
this.lat = lat;
|
||||
this.lon = lon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "n" + id;
|
||||
}
|
||||
|
||||
}
|
||||
37
src/org/oscim/core/osm/OSMRelation.java
Normal file
37
src/org/oscim/core/osm/OSMRelation.java
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2013 Tobias Knerr
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class OSMRelation extends OSMElement {
|
||||
|
||||
public final List<OSMMember> relationMembers;
|
||||
|
||||
// content added after constructor call
|
||||
|
||||
public OSMRelation(TagGroup tags, long id, int initialMemberSize) {
|
||||
super(tags, id);
|
||||
this.relationMembers =
|
||||
new ArrayList<OSMMember>(initialMemberSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "r" + id;
|
||||
}
|
||||
|
||||
}
|
||||
40
src/org/oscim/core/osm/OSMWay.java
Normal file
40
src/org/oscim/core/osm/OSMWay.java
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2013 Tobias Knerr
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class OSMWay extends OSMElement {
|
||||
|
||||
public final List<OSMNode> nodes;
|
||||
|
||||
public OSMWay(TagGroup tags, long id, List<OSMNode> nodes) {
|
||||
super(tags, id);
|
||||
for (OSMNode node : nodes)
|
||||
assert node != null;
|
||||
this.nodes = nodes;
|
||||
}
|
||||
|
||||
public boolean isClosed() {
|
||||
return nodes.size() > 0 &&
|
||||
nodes.get(0).equals(nodes.get(nodes.size() - 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "w" + id;
|
||||
}
|
||||
|
||||
}
|
||||
31
src/org/oscim/core/osm/TagGroup.java
Normal file
31
src/org/oscim/core/osm/TagGroup.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2013 Hannes Janetzek
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.oscim.core.osm;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class TagGroup {
|
||||
public final static TagGroup EMPTY_TAG_GROUP = new TagGroup();
|
||||
|
||||
public final Map<String, String> tags;
|
||||
|
||||
public TagGroup(Map<String,String> tags) {
|
||||
this.tags = tags;
|
||||
}
|
||||
|
||||
private TagGroup(){
|
||||
this.tags = null;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user