apply patch from issue 218

git-svn-id: https://osmand.googlecode.com/svn/trunk@719 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
Victor Shcherb 2010-11-28 23:03:47 +00:00
parent e0e262d5a4
commit e2ee14856b
9 changed files with 348 additions and 245 deletions

View file

@ -56,6 +56,7 @@ import net.osmand.osm.OSMSettings.OSMTagKey;
import net.osmand.osm.io.IOsmStorageFilter; import net.osmand.osm.io.IOsmStorageFilter;
import net.osmand.osm.io.OsmBaseStorage; import net.osmand.osm.io.OsmBaseStorage;
import net.osmand.swing.DataExtractionSettings; import net.osmand.swing.DataExtractionSettings;
import net.osmand.swing.Messages;
import net.sf.junidecode.Junidecode; import net.sf.junidecode.Junidecode;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -265,55 +266,55 @@ public class IndexCreator {
Statement stat = dbConn.createStatement(); Statement stat = dbConn.createStatement();
if (usingDerby()) { if (usingDerby()) {
try { try {
stat.executeUpdate("drop table node"); stat.executeUpdate("drop table node"); //$NON-NLS-1$
} catch (SQLException e) { } catch (SQLException e) {
// ignore it // ignore it
} }
} else { } else {
stat.executeUpdate("drop table if exists node"); stat.executeUpdate("drop table if exists node"); //$NON-NLS-1$
} }
stat.executeUpdate("create table node (id bigint primary key, latitude double, longitude double)"); stat.executeUpdate("create table node (id bigint primary key, latitude double, longitude double)"); //$NON-NLS-1$
stat.executeUpdate("create index IdIndex ON node (id)"); stat.executeUpdate("create index IdIndex ON node (id)"); //$NON-NLS-1$
if (usingDerby()) { if (usingDerby()) {
try { try {
stat.executeUpdate("drop table ways"); stat.executeUpdate("drop table ways"); //$NON-NLS-1$
} catch (SQLException e) { } catch (SQLException e) {
// ignore it // ignore it
} }
} else { } else {
stat.executeUpdate("drop table if exists ways"); stat.executeUpdate("drop table if exists ways"); //$NON-NLS-1$
} }
stat.executeUpdate("create table ways (id bigint, node bigint, ord smallint, primary key (id, ord))"); stat.executeUpdate("create table ways (id bigint, node bigint, ord smallint, primary key (id, ord))"); //$NON-NLS-1$
stat.executeUpdate("create index IdWIndex ON ways (id)"); stat.executeUpdate("create index IdWIndex ON ways (id)"); //$NON-NLS-1$
if (usingDerby()) { if (usingDerby()) {
try { try {
stat.executeUpdate("drop table relations"); stat.executeUpdate("drop table relations"); //$NON-NLS-1$
} catch (SQLException e) { } catch (SQLException e) {
// ignore it // ignore it
} }
} else { } else {
stat.executeUpdate("drop table if exists relations"); stat.executeUpdate("drop table if exists relations"); //$NON-NLS-1$
} }
stat stat
.executeUpdate("create table relations (id bigint, member bigint, type smallint, role varchar(255), ord smallint, primary key (id, ord))"); .executeUpdate("create table relations (id bigint, member bigint, type smallint, role varchar(255), ord smallint, primary key (id, ord))"); //$NON-NLS-1$
stat.executeUpdate("create index IdRIndex ON relations (id)"); stat.executeUpdate("create index IdRIndex ON relations (id)"); //$NON-NLS-1$
if (usingDerby()) { if (usingDerby()) {
try { try {
stat.executeUpdate("drop table tags"); stat.executeUpdate("drop table tags"); //$NON-NLS-1$
} catch (SQLException e) { } catch (SQLException e) {
// ignore it // ignore it
} }
} else { } else {
stat.executeUpdate("drop table if exists tags"); stat.executeUpdate("drop table if exists tags"); //$NON-NLS-1$
} }
stat.executeUpdate("create table tags (id bigint, type smallint, skeys varchar(255), value varchar(255), primary key (id, type, skeys))"); stat.executeUpdate("create table tags (id bigint, type smallint, skeys varchar(255), value varchar(255), primary key (id, type, skeys))"); //$NON-NLS-1$
stat.executeUpdate("create index IdTIndex ON tags (id, type)"); stat.executeUpdate("create index IdTIndex ON tags (id, type)"); //$NON-NLS-1$
stat.close(); stat.close();
prepNode = dbConn.prepareStatement("insert into node values (?, ?, ?)"); prepNode = dbConn.prepareStatement("insert into node values (?, ?, ?)"); //$NON-NLS-1$
prepWays = dbConn.prepareStatement("insert into ways values (?, ?, ?)"); prepWays = dbConn.prepareStatement("insert into ways values (?, ?, ?)"); //$NON-NLS-1$
prepRelations = dbConn.prepareStatement("insert into relations values (?, ?, ?, ?, ?)"); prepRelations = dbConn.prepareStatement("insert into relations values (?, ?, ?, ?, ?)"); //$NON-NLS-1$
prepTags = dbConn.prepareStatement("insert into tags values (?, ?, ?, ?)"); prepTags = dbConn.prepareStatement("insert into tags values (?, ?, ?, ?)"); //$NON-NLS-1$
dbConn.setAutoCommit(false); dbConn.setAutoCommit(false);
} }
@ -403,7 +404,7 @@ public class IndexCreator {
currentTagsCount = 0; currentTagsCount = 0;
} }
} catch (SQLException ex) { } catch (SQLException ex) {
log.error("Could not save in db", ex); log.error("Could not save in db", ex); //$NON-NLS-1$
} }
// do not add to storage // do not add to storage
return false; return false;
@ -424,7 +425,7 @@ public class IndexCreator {
public String getRegionName() { public String getRegionName() {
if (regionName == null) { if (regionName == null) {
return "Region"; return "Region"; //$NON-NLS-1$
} }
return regionName; return regionName;
} }
@ -453,7 +454,7 @@ public class IndexCreator {
public static boolean databaseFileExists(File dbFile) { public static boolean databaseFileExists(File dbFile) {
if (usingH2()) { if (usingH2()) {
return new File(dbFile.getAbsolutePath() + ".h2.db").exists(); return new File(dbFile.getAbsolutePath() + ".h2.db").exists(); //$NON-NLS-1$
} else { } else {
return dbFile.exists(); return dbFile.exists();
} }
@ -623,7 +624,7 @@ public class IndexCreator {
} }
public String getTempMapDBFileName() { public String getTempMapDBFileName() {
return getMapFileName() + ".tmp"; return getMapFileName() + ".tmp"; //$NON-NLS-1$
} }
public Long getLastModifiedDate() { public Long getLastModifiedDate() {
@ -651,13 +652,13 @@ public class IndexCreator {
// stat.executeUpdate("create table relations (id "+longType+", member "+longType+", type smallint, role varchar(255), ord smallint)"); // stat.executeUpdate("create table relations (id "+longType+", member "+longType+", type smallint, role varchar(255), ord smallint)");
if (type == EntityType.NODE) { if (type == EntityType.NODE) {
// filter out all nodes without tags // filter out all nodes without tags
select = "select n.id, n.latitude, n.longitude, t.skeys, t.value from node n inner join tags t on n.id = t.id and t.type = 0 order by n.id"; select = "select n.id, n.latitude, n.longitude, t.skeys, t.value from node n inner join tags t on n.id = t.id and t.type = 0 order by n.id"; //$NON-NLS-1$
} else if (type == EntityType.WAY) { } else if (type == EntityType.WAY) {
select = "select w.id, w.node, w.ord, t.skeys, t.value, n.latitude, n.longitude " + select = "select w.id, w.node, w.ord, t.skeys, t.value, n.latitude, n.longitude " + //$NON-NLS-1$
"from ways w left join tags t on w.id = t.id and t.type = 1 and w.ord = 0 inner join node n on w.node = n.id " + "from ways w left join tags t on w.id = t.id and t.type = 1 and w.ord = 0 inner join node n on w.node = n.id " + //$NON-NLS-1$
"order by w.id, w.ord"; "order by w.id, w.ord"; //$NON-NLS-1$
} else { } else {
select = "select r.id, t.skeys, t.value from relations r inner join tags t on t.id = r.id and t.type = 2 and r.ord = 0"; select = "select r.id, t.skeys, t.value from relations r inner join tags t on t.id = r.id and t.type = 2 and r.ord = 0"; //$NON-NLS-1$
} }
ResultSet rs = statement.executeQuery(select); ResultSet rs = statement.executeQuery(select);
@ -722,16 +723,16 @@ public class IndexCreator {
private static Set<String> acceptedRoutes = new HashSet<String>(); private static Set<String> acceptedRoutes = new HashSet<String>();
static { static {
acceptedRoutes.add("bus"); acceptedRoutes.add("bus"); //$NON-NLS-1$
acceptedRoutes.add("trolleybus"); acceptedRoutes.add("trolleybus"); //$NON-NLS-1$
acceptedRoutes.add("share_taxi"); acceptedRoutes.add("share_taxi"); //$NON-NLS-1$
acceptedRoutes.add("subway"); acceptedRoutes.add("subway"); //$NON-NLS-1$
acceptedRoutes.add("train"); acceptedRoutes.add("train"); //$NON-NLS-1$
acceptedRoutes.add("tram"); acceptedRoutes.add("tram"); //$NON-NLS-1$
acceptedRoutes.add("ferry"); acceptedRoutes.add("ferry"); //$NON-NLS-1$
} }
private TransportRoute indexTransportRoute(Relation rel) { private TransportRoute indexTransportRoute(Relation rel) {
@ -749,7 +750,7 @@ public class IndexCreator {
r.setType(route); r.setType(route);
if (operator != null) { if (operator != null) {
route = operator + " : " + route; route = operator + " : " + route; //$NON-NLS-1$
} }
final Map<TransportStop, Integer> forwardStops = new LinkedHashMap<TransportStop, Integer>(); final Map<TransportStop, Integer> forwardStops = new LinkedHashMap<TransportStop, Integer>();
@ -758,11 +759,11 @@ public class IndexCreator {
int forwardStop = 0; int forwardStop = 0;
int backwardStop = 0; int backwardStop = 0;
for (Entry<Entity, String> e : rel.getMemberEntities().entrySet()) { for (Entry<Entity, String> e : rel.getMemberEntities().entrySet()) {
if (e.getValue().contains("stop")) { if (e.getValue().contains("stop")) { //$NON-NLS-1$
if (e.getKey() instanceof Node) { if (e.getKey() instanceof Node) {
TransportStop stop = new TransportStop(e.getKey()); TransportStop stop = new TransportStop(e.getKey());
boolean forward = e.getValue().contains("forward"); boolean forward = e.getValue().contains("forward"); //$NON-NLS-1$
boolean backward = e.getValue().contains("backward"); boolean backward = e.getValue().contains("backward"); //$NON-NLS-1$
currentStop++; currentStop++;
if (forward || !backward) { if (forward || !backward) {
forwardStop++; forwardStop++;
@ -834,15 +835,15 @@ public class IndexCreator {
public void indexAddressRelation(Relation i) throws SQLException { public void indexAddressRelation(Relation i) throws SQLException {
String type = i.getTag(OSMTagKey.ADDRESS_TYPE); String type = i.getTag(OSMTagKey.ADDRESS_TYPE);
boolean house = "house".equals(type); boolean house = "house".equals(type); //$NON-NLS-1$
boolean street = "a6".equals(type); boolean street = "a6".equals(type); //$NON-NLS-1$
if (house || street) { if (house || street) {
// try to find appropriate city/street // try to find appropriate city/street
City c = null; City c = null;
// load with member ways with their nodes and tags ! // load with member ways with their nodes and tags !
loadEntityData(i, true); loadEntityData(i, true);
Collection<Entity> members = i.getMembers("is_in"); Collection<Entity> members = i.getMembers("is_in"); //$NON-NLS-1$
Relation a3 = null; Relation a3 = null;
Relation a6 = null; Relation a6 = null;
if (!members.isEmpty()) { if (!members.isEmpty()) {
@ -855,7 +856,7 @@ public class IndexCreator {
// go one level up for house // go one level up for house
if (house) { if (house) {
a6 = (Relation) in; a6 = (Relation) in;
members = ((Relation) in).getMembers("is_in"); members = ((Relation) in).getMembers("is_in"); //$NON-NLS-1$
if (!members.isEmpty()) { if (!members.isEmpty()) {
in = members.iterator().next(); in = members.iterator().next();
loadEntityData(in, true); loadEntityData(in, true);
@ -871,7 +872,7 @@ public class IndexCreator {
} }
if (a3 != null) { if (a3 != null) {
Collection<EntityId> memberIds = a3.getMemberIds("label"); Collection<EntityId> memberIds = a3.getMemberIds("label"); //$NON-NLS-1$
if (!memberIds.isEmpty()) { if (!memberIds.isEmpty()) {
c = cities.get(memberIds.iterator().next()); c = cities.get(memberIds.iterator().next());
} }
@ -897,7 +898,7 @@ public class IndexCreator {
} }
if (street) { if (street) {
for (Map.Entry<Entity, String> r : i.getMemberEntities().entrySet()) { for (Map.Entry<Entity, String> r : i.getMemberEntities().entrySet()) {
if ("street".equals(r.getValue())) { if ("street".equals(r.getValue())) { //$NON-NLS-1$
if (r.getKey() instanceof Way && saveAddressWays) { if (r.getKey() instanceof Way && saveAddressWays) {
DataIndexWriter.writeStreetWayNodes(addressStreetNodeStat, DataIndexWriter.writeStreetWayNodes(addressStreetNodeStat,
pStatements, streetId, (Way) r.getKey(), BATCH_SIZE); pStatements, streetId, (Way) r.getKey(), BATCH_SIZE);
@ -905,7 +906,7 @@ public class IndexCreator {
addressStreetNodeLocalSet.add(r.getKey().getId()); addressStreetNodeLocalSet.add(r.getKey().getId());
} }
} }
} else if ("house".equals(r.getValue())) { } else if ("house".equals(r.getValue())) { //$NON-NLS-1$
// will be registered further in other case // will be registered further in other case
if (!(r.getKey() instanceof Relation)) { if (!(r.getKey() instanceof Relation)) {
String hno = r.getKey().getTag(OSMTagKey.ADDR_HOUSE_NUMBER); String hno = r.getKey().getTag(OSMTagKey.ADDR_HOUSE_NUMBER);
@ -929,7 +930,7 @@ public class IndexCreator {
if (hno == null) { if (hno == null) {
hno = i.getTag(OSMTagKey.NAME); hno = i.getTag(OSMTagKey.NAME);
} }
members = i.getMembers("border"); members = i.getMembers("border"); //$NON-NLS-1$
if (!members.isEmpty()) { if (!members.isEmpty()) {
Entity border = members.iterator().next(); Entity border = members.iterator().next();
if (border != null) { if (border != null) {
@ -946,7 +947,7 @@ public class IndexCreator {
} }
} }
} else { } else {
log.info("For relation " + i.getId() + " border not found"); log.info("For relation " + i.getId() + " border not found"); //$NON-NLS-1$ //$NON-NLS-2$
} }
} }
@ -1067,7 +1068,7 @@ public class IndexCreator {
name = normalizeStreetName(name); name = normalizeStreetName(name);
if (loadInMemory) { if (loadInMemory) {
foundId = addressStreetLocalMap.get(name + "_" + city.getId()); foundId = addressStreetLocalMap.get(name + "_" + city.getId()); //$NON-NLS-1$
} else { } else {
addressSearchStreetStat.setLong(1, city.getId()); addressSearchStreetStat.setLong(1, city.getId());
addressSearchStreetStat.setString(2, name); addressSearchStreetStat.setString(2, name);
@ -1083,7 +1084,7 @@ public class IndexCreator {
location.getLatitude(), location.getLongitude(), city.getId()); location.getLatitude(), location.getLongitude(), city.getId());
if (loadInMemory) { if (loadInMemory) {
DataIndexWriter.addBatch(pStatements, addressStreetStat, BATCH_SIZE); DataIndexWriter.addBatch(pStatements, addressStreetStat, BATCH_SIZE);
addressStreetLocalMap.put(name + "_" + city.getId(), initId); addressStreetLocalMap.put(name + "_" + city.getId(), initId); //$NON-NLS-1$
} else { } else {
addressStreetStat.execute(); addressStreetStat.execute();
// commit immediately to search after // commit immediately to search after
@ -1128,7 +1129,7 @@ public class IndexCreator {
if (indexMap && (e instanceof Way || e instanceof Node)) { if (indexMap && (e instanceof Way || e instanceof Node)) {
// manipulate what kind of way to load // manipulate what kind of way to load
loadEntityData(e, false); loadEntityData(e, false);
boolean inverse = "-1".equals(e.getTag(OSMTagKey.ONEWAY)); boolean inverse = "-1".equals(e.getTag(OSMTagKey.ONEWAY)); //$NON-NLS-1$
for (int i = 0; i < MAP_ZOOMS.length - 1; i++) { for (int i = 0; i < MAP_ZOOMS.length - 1; i++) {
writeBinaryEntityToMapDatabase(e, e.getId(), i == 0 ? inverse : false, i); writeBinaryEntityToMapDatabase(e, e.getId(), i == 0 ? inverse : false, i);
} }
@ -1199,33 +1200,33 @@ public class IndexCreator {
} }
} else if (step == STEP_ADDRESS_RELATIONS_AND_MULTYPOLYGONS) { } else if (step == STEP_ADDRESS_RELATIONS_AND_MULTYPOLYGONS) {
if (indexAddress) { if (indexAddress) {
if (e instanceof Relation && "address".equals(e.getTag(OSMTagKey.TYPE))) { if (e instanceof Relation && "address".equals(e.getTag(OSMTagKey.TYPE))) { //$NON-NLS-1$
indexAddressRelation((Relation) e); indexAddressRelation((Relation) e);
} }
} }
if (indexMap && e instanceof Relation && "restriction".equals(e.getTag(OSMTagKey.TYPE))) { if (indexMap && e instanceof Relation && "restriction".equals(e.getTag(OSMTagKey.TYPE))) { //$NON-NLS-1$
String val = e.getTag("restriction"); String val = e.getTag("restriction"); //$NON-NLS-1$
if (val != null) { if (val != null) {
byte type = -1; byte type = -1;
if ("no_right_turn".equalsIgnoreCase(val)) { if ("no_right_turn".equalsIgnoreCase(val)) { //$NON-NLS-1$
type = MapRenderingTypes.RESTRICTION_NO_RIGHT_TURN; type = MapRenderingTypes.RESTRICTION_NO_RIGHT_TURN;
} else if ("no_left_turn".equalsIgnoreCase(val)) { } else if ("no_left_turn".equalsIgnoreCase(val)) { //$NON-NLS-1$
type = MapRenderingTypes.RESTRICTION_NO_LEFT_TURN; type = MapRenderingTypes.RESTRICTION_NO_LEFT_TURN;
} else if ("no_u_turn".equalsIgnoreCase(val)) { } else if ("no_u_turn".equalsIgnoreCase(val)) { //$NON-NLS-1$
type = MapRenderingTypes.RESTRICTION_NO_U_TURN; type = MapRenderingTypes.RESTRICTION_NO_U_TURN;
} else if ("no_straight_on".equalsIgnoreCase(val)) { } else if ("no_straight_on".equalsIgnoreCase(val)) { //$NON-NLS-1$
type = MapRenderingTypes.RESTRICTION_NO_STRAIGHT_ON; type = MapRenderingTypes.RESTRICTION_NO_STRAIGHT_ON;
} else if ("only_right_turn".equalsIgnoreCase(val)) { } else if ("only_right_turn".equalsIgnoreCase(val)) { //$NON-NLS-1$
type = MapRenderingTypes.RESTRICTION_ONLY_RIGHT_TURN; type = MapRenderingTypes.RESTRICTION_ONLY_RIGHT_TURN;
} else if ("only_left_turn".equalsIgnoreCase(val)) { } else if ("only_left_turn".equalsIgnoreCase(val)) { //$NON-NLS-1$
type = MapRenderingTypes.RESTRICTION_ONLY_LEFT_TURN; type = MapRenderingTypes.RESTRICTION_ONLY_LEFT_TURN;
} else if ("only_straight_on".equalsIgnoreCase(val)) { } else if ("only_straight_on".equalsIgnoreCase(val)) { //$NON-NLS-1$
type = MapRenderingTypes.RESTRICTION_ONLY_STRAIGHT_ON; type = MapRenderingTypes.RESTRICTION_ONLY_STRAIGHT_ON;
} }
if (type != -1) { if (type != -1) {
loadEntityData(e, true); loadEntityData(e, true);
Collection<EntityId> fromL = ((Relation) e).getMemberIds("from"); Collection<EntityId> fromL = ((Relation) e).getMemberIds("from"); //$NON-NLS-1$
Collection<EntityId> toL = ((Relation) e).getMemberIds("to"); Collection<EntityId> toL = ((Relation) e).getMemberIds("to"); //$NON-NLS-1$
if (!fromL.isEmpty() && !toL.isEmpty()) { if (!fromL.isEmpty() && !toL.isEmpty()) {
EntityId from = fromL.iterator().next(); EntityId from = fromL.iterator().next();
EntityId to = toL.iterator().next(); EntityId to = toL.iterator().next();
@ -1239,13 +1240,13 @@ public class IndexCreator {
} }
} }
} }
if (indexMap && e instanceof Relation && "multipolygon".equals(e.getTag(OSMTagKey.TYPE))) { if (indexMap && e instanceof Relation && "multipolygon".equals(e.getTag(OSMTagKey.TYPE))) { //$NON-NLS-1$
loadEntityData(e, true); loadEntityData(e, true);
Map<Entity, String> entities = ((Relation) e).getMemberEntities(); Map<Entity, String> entities = ((Relation) e).getMemberEntities();
for (Entity es : entities.keySet()) { for (Entity es : entities.keySet()) {
if (es instanceof Way) { if (es instanceof Way) {
boolean inner = "inner".equals(entities.get(es)); boolean inner = "inner".equals(entities.get(es)); //$NON-NLS-1$
if (!inner) { if (!inner) {
for (String t : es.getTagKeySet()) { for (String t : es.getTagKeySet()) {
e.putTag(t, es.getTag(t)); e.putTag(t, es.getTag(t));
@ -1277,24 +1278,24 @@ public class IndexCreator {
// skip completed rings that are not one type // skip completed rings that are not one type
for (List<Way> l : completedRings) { for (List<Way> l : completedRings) {
boolean innerType = "inner".equals(entities.get(l.get(0))); boolean innerType = "inner".equals(entities.get(l.get(0))); //$NON-NLS-1$
for (Way way : l) { for (Way way : l) {
boolean inner = "inner".equals(entities.get(way)); boolean inner = "inner".equals(entities.get(way)); //$NON-NLS-1$
if (innerType != inner) { if (innerType != inner) {
log.warn("Probably map bug: Multipoligon contains outer and inner ways.\n" + log.warn("Probably map bug: Multipoligon contains outer and inner ways.\n" + //$NON-NLS-1$
"Way:" + way.getId() + " is strange part of completed ring. InnerType:" + innerType + " way inner: " + inner + " way inner string:" + entities.get(way)); "Way:" + way.getId() + " is strange part of completed ring. InnerType:" + innerType + " way inner: " + inner + " way inner string:" + entities.get(way)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
return; return;
} }
} }
} }
for (List<Way> l : completedRings) { for (List<Way> l : completedRings) {
boolean innerType = "inner".equals(entities.get(l.get(0))); boolean innerType = "inner".equals(entities.get(l.get(0))); //$NON-NLS-1$
boolean clockwise = isClockwiseWay(l); boolean clockwise = isClockwiseWay(l);
// clockwise - outer (like coastline), anticlockwise - inner // clockwise - outer (like coastline), anticlockwise - inner
boolean inverse = clockwise != !innerType; boolean inverse = clockwise != !innerType;
for (Way way : l) { for (Way way : l) {
boolean inner = "inner".equals(entities.get(way)); boolean inner = "inner".equals(entities.get(way)); //$NON-NLS-1$
if (!inner && name != null) { if (!inner && name != null) {
multiPolygonsNames.put(way.getId(), name); multiPolygonsNames.put(way.getId(), name);
} }
@ -1575,7 +1576,7 @@ public class IndexCreator {
int ind = 0; int ind = 0;
int sh = 0; int sh = 0;
if(typeUse.size() > 3){ if(typeUse.size() > 3){
log.error("Types for low index way more than 4"); log.error("Types for low index way more than 4"); //$NON-NLS-1$
} }
i |= (mainType << sh); i |= (mainType << sh);
if (typeUse.size() > ind) { if (typeUse.size() > ind) {
@ -1907,7 +1908,7 @@ public class IndexCreator {
break; break;
} }
} }
progress.startTask("Serializing city addresses...", j + ((cities.size() - j) / 100 + 1)); progress.startTask(Messages.getString("IndexCreator.SERIALIZING_ADRESS"), j + ((cities.size() - j) / 100 + 1)); //$NON-NLS-1$
Map<String, Set<Street>> postcodes = new TreeMap<String, Set<Street>>(); Map<String, Set<Street>> postcodes = new TreeMap<String, Set<Street>>();
boolean writeCities = true; boolean writeCities = true;
@ -1950,7 +1951,7 @@ public class IndexCreator {
} }
} }
if (f > 500) { if (f > 500) {
System.out.println("! " + c.getName() + " ! " + f + " " + bCount + " streets " + streets.size()); System.out.println("! " + c.getName() + " ! " + f + " " + bCount + " streets " + streets.size()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
} }
} }
writer.endCityIndexes(!writeCities); writer.endCityIndexes(!writeCities);
@ -1975,7 +1976,7 @@ public class IndexCreator {
public void writeBinaryMapIndex(BinaryMapIndexWriter writer) throws IOException, SQLException { public void writeBinaryMapIndex(BinaryMapIndexWriter writer) throws IOException, SQLException {
try { try {
PreparedStatement selectData = mapConnection.prepareStatement("SELECT nodes, types, name, highway, restrictions FROM binary_map_objects WHERE id = ?"); PreparedStatement selectData = mapConnection.prepareStatement("SELECT nodes, types, name, highway, restrictions FROM binary_map_objects WHERE id = ?"); //$NON-NLS-1$
writer.startWriteMapIndex(regionName); writer.startWriteMapIndex(regionName);
@ -2024,7 +2025,7 @@ public class IndexCreator {
rs.getBytes(2), rs.getString(3), rs.getBytes(2), rs.getString(3),
rs.getInt(4), rs.getBytes(5)); rs.getInt(4), rs.getBytes(5));
} else { } else {
log.error("Something goes wrong with id = " + id); log.error("Something goes wrong with id = " + id); //$NON-NLS-1$
} }
} else { } else {
long ptr = ((NonLeafElement) e[i]).getPtr(); long ptr = ((NonLeafElement) e[i]).getPtr();
@ -2049,14 +2050,14 @@ public class IndexCreator {
private Map<String, Integer> createStringTableForTransport() { private Map<String, Integer> createStringTableForTransport() {
Map<String, Integer> stringTable = new LinkedHashMap<String, Integer>(); Map<String, Integer> stringTable = new LinkedHashMap<String, Integer>();
registerString(stringTable, "bus"); registerString(stringTable, "bus"); //$NON-NLS-1$
registerString(stringTable, "trolleybus"); registerString(stringTable, "trolleybus"); //$NON-NLS-1$
registerString(stringTable, "subway"); registerString(stringTable, "subway"); //$NON-NLS-1$
registerString(stringTable, "tram"); registerString(stringTable, "tram"); //$NON-NLS-1$
registerString(stringTable, "share_taxi"); registerString(stringTable, "share_taxi"); //$NON-NLS-1$
registerString(stringTable, "taxi"); registerString(stringTable, "taxi"); //$NON-NLS-1$
registerString(stringTable, "train"); registerString(stringTable, "train"); //$NON-NLS-1$
registerString(stringTable, "ferry"); registerString(stringTable, "ferry"); //$NON-NLS-1$
return stringTable; return stringTable;
} }
@ -2064,10 +2065,10 @@ public class IndexCreator {
try { try {
visitedStops = null; // allow gc to collect it visitedStops = null; // allow gc to collect it
PreparedStatement selectTransportRouteData = mapConnection.prepareStatement( PreparedStatement selectTransportRouteData = mapConnection.prepareStatement(
"SELECT id, dist, name, name_en, ref, operator, type FROM transport_route"); "SELECT id, dist, name, name_en, ref, operator, type FROM transport_route"); //$NON-NLS-1$
PreparedStatement selectTransportData = mapConnection.prepareStatement("SELECT S.stop, S.direction," + PreparedStatement selectTransportData = mapConnection.prepareStatement("SELECT S.stop, S.direction," + //$NON-NLS-1$
" A.latitude, A.longitude, A.name, A.name_en " + " A.latitude, A.longitude, A.name, A.name_en " + //$NON-NLS-1$
"FROM transport_route_stop S INNER JOIN transport_stop A ON A.id = S.stop WHERE S.route = ? ORDER BY S.ord asc"); "FROM transport_route_stop S INNER JOIN transport_stop A ON A.id = S.stop WHERE S.route = ? ORDER BY S.ord asc"); //$NON-NLS-1$
writer.startWriteTransportIndex(regionName); writer.startWriteTransportIndex(regionName);
@ -2127,9 +2128,9 @@ public class IndexCreator {
writer.endWriteTransportRoutes(); writer.endWriteTransportRoutes();
PreparedStatement selectTransportStop = mapConnection.prepareStatement( PreparedStatement selectTransportStop = mapConnection.prepareStatement(
"SELECT A.id, A.latitude, A.longitude, A.name, A.name_en FROM transport_stop A where A.id = ?"); "SELECT A.id, A.latitude, A.longitude, A.name, A.name_en FROM transport_stop A where A.id = ?"); //$NON-NLS-1$
PreparedStatement selectTransportRouteStop = mapConnection.prepareStatement( PreparedStatement selectTransportRouteStop = mapConnection.prepareStatement(
"SELECT DISTINCT S.route FROM transport_route_stop S WHERE S.stop = ? "); "SELECT DISTINCT S.route FROM transport_route_stop S WHERE S.stop = ? "); //$NON-NLS-1$
long rootIndex = transportStopsTree.getFileHdr().getRootIndex(); long rootIndex = transportStopsTree.getFileHdr().getRootIndex();
rtree.Node root = transportStopsTree.getReadNode(rootIndex); rtree.Node root = transportStopsTree.getReadNode(rootIndex);
Rect rootBounds = calcBounds(root); Rect rootBounds = calcBounds(root);
@ -2180,7 +2181,7 @@ public class IndexCreator {
while (rset.next()) { while (rset.next()) {
Long route = transportRoutes.get(rset.getLong(1)); Long route = transportRoutes.get(rset.getLong(1));
if (route == null) { if (route == null) {
log.error("Something goes wrong with transport route id = " + rset.getLong(1)); log.error("Something goes wrong with transport route id = " + rset.getLong(1)); //$NON-NLS-1$
} else { } else {
routes.add(route); routes.add(route);
} }
@ -2188,7 +2189,7 @@ public class IndexCreator {
rset.close(); rset.close();
writer.writeTransportStop(id, x24, y24, name, nameEn, stringTable, routes); writer.writeTransportStop(id, x24, y24, name, nameEn, stringTable, routes);
} else { } else {
log.error("Something goes wrong with transport id = " + id); log.error("Something goes wrong with transport id = " + id); //$NON-NLS-1$
} }
} else { } else {
long ptr = ((NonLeafElement) e[i]).getPtr(); long ptr = ((NonLeafElement) e[i]).getPtr();
@ -2219,19 +2220,19 @@ public class IndexCreator {
} }
public String getRTreeMapIndexNonPackFileName() { public String getRTreeMapIndexNonPackFileName() {
return mapFile.getAbsolutePath() + ".rtree"; return mapFile.getAbsolutePath() + ".rtree"; //$NON-NLS-1$
} }
public String getRTreeTransportStopsFileName() { public String getRTreeTransportStopsFileName() {
return mapFile.getAbsolutePath() + ".trans"; return mapFile.getAbsolutePath() + ".trans"; //$NON-NLS-1$
} }
public String getRTreeTransportStopsPackFileName() { public String getRTreeTransportStopsPackFileName() {
return mapFile.getAbsolutePath() + ".ptrans"; return mapFile.getAbsolutePath() + ".ptrans"; //$NON-NLS-1$
} }
public String getRTreeMapIndexPackFileName() { public String getRTreeMapIndexPackFileName() {
return mapFile.getAbsolutePath() + ".prtree"; return mapFile.getAbsolutePath() + ".prtree"; //$NON-NLS-1$
} }
public void generateIndexes(File readFile, IProgress progress, IOsmStorageFilter addFilter) throws IOException, SAXException, public void generateIndexes(File readFile, IProgress progress, IOsmStorageFilter addFilter) throws IOException, SAXException,
@ -2272,8 +2273,8 @@ public class IndexCreator {
int allWays = 1000000; int allWays = 1000000;
int allNodes = 10000000; int allNodes = 10000000;
if (loadFromPath) { if (loadFromPath) {
progress.setGeneralProgress("[35 of 100]"); progress.setGeneralProgress("[35 / 100]"); //$NON-NLS-1$
progress.startTask("Loading file " + readFile.getAbsolutePath(), -1); progress.startTask(Messages.getString("IndexCreator.LOADING_FILE") + readFile.getAbsolutePath(), -1); //$NON-NLS-1$
NewDataExtractionOsmFilter filter = extractOsmToNodesDB(readFile, progress, addFilter); NewDataExtractionOsmFilter filter = extractOsmToNodesDB(readFile, progress, addFilter);
if (filter != null) { if (filter != null) {
@ -2283,14 +2284,14 @@ public class IndexCreator {
} }
} }
pselectNode = dbConn.prepareStatement("select n.latitude, n.longitude, t.skeys, t.value from node n left join tags t on n.id = t.id and t.type = 0 where n.id = ?"); pselectNode = dbConn.prepareStatement("select n.latitude, n.longitude, t.skeys, t.value from node n left join tags t on n.id = t.id and t.type = 0 where n.id = ?"); //$NON-NLS-1$
pselectWay = dbConn.prepareStatement("select w.node, w.ord, t.skeys, t.value, n.latitude, n.longitude " + pselectWay = dbConn.prepareStatement("select w.node, w.ord, t.skeys, t.value, n.latitude, n.longitude " + //$NON-NLS-1$
"from ways w left join tags t on w.id = t.id and t.type = 1 and w.ord = 0 inner join node n on w.node = n.id " + "from ways w left join tags t on w.id = t.id and t.type = 1 and w.ord = 0 inner join node n on w.node = n.id " + //$NON-NLS-1$
"where w.id = ? order by w.ord"); "where w.id = ? order by w.ord"); //$NON-NLS-1$
pselectRelation = dbConn.prepareStatement("select r.member, r.type, r.role, r.ord, t.skeys, t.value " + pselectRelation = dbConn.prepareStatement("select r.member, r.type, r.role, r.ord, t.skeys, t.value " + //$NON-NLS-1$
"from relations r left join tags t on r.id = t.id and t.type = 2 and r.ord = 0 " + "from relations r left join tags t on r.id = t.id and t.type = 2 and r.ord = 0 " + //$NON-NLS-1$
"where r.id = ? order by r.ord"); "where r.id = ? order by r.ord"); //$NON-NLS-1$
pselectTags = dbConn.prepareStatement("select skeys, value from tags where id = ? and type = ?"); pselectTags = dbConn.prepareStatement("select skeys, value from tags where id = ? and type = ?"); //$NON-NLS-1$
// do not create temp map file and rtree files // do not create temp map file and rtree files
if (recreateOnlyBinaryFile) { if (recreateOnlyBinaryFile) {
@ -2310,7 +2311,7 @@ public class IndexCreator {
transportStopsTree = new RTree(getRTreeTransportStopsPackFileName()); transportStopsTree = new RTree(getRTreeTransportStopsPackFileName());
} }
} catch (RTreeException e) { } catch (RTreeException e) {
log.error("Error flushing", e); log.error("Error flushing", e); //$NON-NLS-1$
throw new IOException(e); throw new IOException(e);
} }
} else { } else {
@ -2322,8 +2323,8 @@ public class IndexCreator {
// 3.1 write all cities // 3.1 write all cities
if (indexAddress) { if (indexAddress) {
progress.setGeneralProgress("[40 of 100]"); progress.setGeneralProgress("[40 / 100]"); //$NON-NLS-1$
progress.startTask("Indexing cities...", allNodes); progress.startTask(Messages.getString("IndexCreator.INDEX_CITIES"), allNodes); //$NON-NLS-1$
if (!loadFromPath) { if (!loadFromPath) {
allNodes = iterateOverEntities(progress, EntityType.NODE, allNodes, STEP_CITY_NODES); allNodes = iterateOverEntities(progress, EntityType.NODE, allNodes, STEP_CITY_NODES);
} }
@ -2342,8 +2343,8 @@ public class IndexCreator {
// 3.2 index address relations // 3.2 index address relations
if (indexAddress || indexMap) { if (indexAddress || indexMap) {
progress.setGeneralProgress("[40 of 100]"); progress.setGeneralProgress("[40 / 100]"); //$NON-NLS-1$
progress.startTask("Preindexing address and map ways...", allRelations); progress.startTask(Messages.getString("IndexCreator.PREINDEX_ADRESS_MAP"), allRelations); //$NON-NLS-1$
allRelations = iterateOverEntities(progress, EntityType.RELATION, allRelations, allRelations = iterateOverEntities(progress, EntityType.RELATION, allRelations,
STEP_ADDRESS_RELATIONS_AND_MULTYPOLYGONS); STEP_ADDRESS_RELATIONS_AND_MULTYPOLYGONS);
// commit to put all cities // commit to put all cities
@ -2394,16 +2395,16 @@ public class IndexCreator {
// 4. packing map rtree indexes // 4. packing map rtree indexes
if (indexMap) { if (indexMap) {
progress.setGeneralProgress("[90 of 100]"); progress.setGeneralProgress("[90 / 100]"); //$NON-NLS-1$
progress.startTask("Packing rtree map data...", -1); progress.startTask(Messages.getString("IndexCreator.PACK_RTREE_MAP"), -1); //$NON-NLS-1$
for (int i = 0; i < MAP_ZOOMS.length - 1; i++) { for (int i = 0; i < MAP_ZOOMS.length - 1; i++) {
mapTree[i] = packRtreeFile(mapTree[i], getRTreeMapIndexNonPackFileName() + i, getRTreeMapIndexPackFileName() + i); mapTree[i] = packRtreeFile(mapTree[i], getRTreeMapIndexNonPackFileName() + i, getRTreeMapIndexPackFileName() + i);
} }
} }
if (indexTransport) { if (indexTransport) {
progress.setGeneralProgress("[90 of 100]"); progress.setGeneralProgress("[90 / 100]"); //$NON-NLS-1$
progress.startTask("Packing rtree transport data...", -1); progress.startTask(Messages.getString("IndexCreator.PACK_RTREE_TRANSP"), -1); //$NON-NLS-1$
transportStopsTree = packRtreeFile(transportStopsTree, getRTreeTransportStopsFileName(), getRTreeTransportStopsPackFileName()); transportStopsTree = packRtreeFile(transportStopsTree, getRTreeTransportStopsFileName(), getRTreeTransportStopsPackFileName());
} }
} }
@ -2440,19 +2441,19 @@ public class IndexCreator {
progress.finishTask(); progress.finishTask();
writer.close(); writer.close();
mapRAFile.close(); mapRAFile.close();
log.info("Finish writing binary file"); log.info("Finish writing binary file"); //$NON-NLS-1$
} }
} catch (RuntimeException e) { } catch (RuntimeException e) {
log.error("Log exception", e); log.error("Log exception", e); //$NON-NLS-1$
throw e; throw e;
} catch (SQLException e) { } catch (SQLException e) {
log.error("Log exception", e); log.error("Log exception", e); //$NON-NLS-1$
throw e; throw e;
} catch (IOException e) { } catch (IOException e) {
log.error("Log exception", e); log.error("Log exception", e); //$NON-NLS-1$
throw e; throw e;
} catch (SAXException e) { } catch (SAXException e) {
log.error("Log exception", e); log.error("Log exception", e); //$NON-NLS-1$
throw e; throw e;
} finally { } finally {
try { try {
@ -2532,14 +2533,14 @@ public class IndexCreator {
// do not delete first db connection // do not delete first db connection
if (dbConn != null) { if (dbConn != null) {
if (usingH2()) { if (usingH2()) {
dbConn.createStatement().execute("SHUTDOWN COMPACT"); dbConn.createStatement().execute("SHUTDOWN COMPACT"); //$NON-NLS-1$
} }
dbConn.close(); dbConn.close();
} }
if (deleteOsmDB) { if (deleteOsmDB) {
if (usingDerby()) { if (usingDerby()) {
try { try {
DriverManager.getConnection("jdbc:derby:;shutdown=true"); DriverManager.getConnection("jdbc:derby:;shutdown=true"); //$NON-NLS-1$
} catch (SQLException e) { } catch (SQLException e) {
// ignore exception // ignore exception
} }
@ -2572,7 +2573,7 @@ public class IndexCreator {
private RTree packRtreeFile(RTree tree, String nonPackFileName, String packFileName) throws IOException { private RTree packRtreeFile(RTree tree, String nonPackFileName, String packFileName) throws IOException {
try { try {
assert rtree.Node.MAX < 50 : "It is better for search performance"; assert rtree.Node.MAX < 50 : "It is better for search performance"; //$NON-NLS-1$
tree.flush(); tree.flush();
File file = new File(packFileName); File file = new File(packFileName);
if (file.exists()) { if (file.exists()) {
@ -2589,7 +2590,7 @@ public class IndexCreator {
return new RTree(packFileName); return new RTree(packFileName);
} }
} catch (RTreeException e) { } catch (RTreeException e) {
log.error("Error flushing", e); log.error("Error flushing", e); //$NON-NLS-1$
throw new IOException(e); throw new IOException(e);
} }
return tree; return tree;
@ -2602,13 +2603,13 @@ public class IndexCreator {
InputStream stream = new FileInputStream(readFile); InputStream stream = new FileInputStream(readFile);
InputStream streamFile = stream; InputStream streamFile = stream;
long st = System.currentTimeMillis(); long st = System.currentTimeMillis();
if (readFile.getName().endsWith(".bz2")) { if (readFile.getName().endsWith(".bz2")) { //$NON-NLS-1$
if (stream.read() != 'B' || stream.read() != 'Z') { if (stream.read() != 'B' || stream.read() != 'Z') {
throw new RuntimeException("The source stream must start with the characters BZ if it is to be read as a BZip2 stream."); throw new RuntimeException("The source stream must start with the characters BZ if it is to be read as a BZip2 stream."); //$NON-NLS-1$
} else { } else {
stream = new CBZip2InputStream(stream); stream = new CBZip2InputStream(stream);
} }
} else if (readFile.getName().endsWith(".pbf")) { } else if (readFile.getName().endsWith(".pbf")) { //$NON-NLS-1$
pbfFile = true; pbfFile = true;
} }
@ -2633,13 +2634,13 @@ public class IndexCreator {
dbConn.commit(); dbConn.commit();
if (log.isInfoEnabled()) { if (log.isInfoEnabled()) {
log.info("File parsed : " + (System.currentTimeMillis() - st)); log.info("File parsed : " + (System.currentTimeMillis() - st)); //$NON-NLS-1$
} }
progress.finishTask(); progress.finishTask();
return filter; return filter;
} finally { } finally {
if (log.isInfoEnabled()) { if (log.isInfoEnabled()) {
log.info("File indexed : " + (System.currentTimeMillis() - st)); log.info("File indexed : " + (System.currentTimeMillis() - st)); //$NON-NLS-1$
} }
} }
} }
@ -2748,15 +2749,15 @@ public class IndexCreator {
} }
public static void removeWayNodes(File sqlitedb) throws SQLException { public static void removeWayNodes(File sqlitedb) throws SQLException {
Connection dbConn = DriverManager.getConnection("jdbc:sqlite:" + sqlitedb.getAbsolutePath()); Connection dbConn = DriverManager.getConnection("jdbc:sqlite:" + sqlitedb.getAbsolutePath()); //$NON-NLS-1$
dbConn.setAutoCommit(false); dbConn.setAutoCommit(false);
Statement st = dbConn.createStatement(); Statement st = dbConn.createStatement();
st.execute("DELETE FROM street_node WHERE 1=1"); st.execute("DELETE FROM street_node WHERE 1=1"); //$NON-NLS-1$
st.close(); st.close();
dbConn.commit(); dbConn.commit();
st = dbConn.createStatement(); st = dbConn.createStatement();
if (usingSQLite()) { if (usingSQLite()) {
st.execute("VACUUM"); st.execute("VACUUM"); //$NON-NLS-1$
} }
st.close(); st.close();
dbConn.close(); dbConn.close();
@ -2766,7 +2767,7 @@ public class IndexCreator {
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
IndexCreator creator = new IndexCreator(new File("e:/Information/OSM maps/osmand/")); IndexCreator creator = new IndexCreator(new File("e:/Information/OSM maps/osmand/")); //$NON-NLS-1$
creator.setIndexMap(true); creator.setIndexMap(true);
creator.setIndexAddress(true); creator.setIndexAddress(true);
creator.setIndexPOI(true); creator.setIndexPOI(true);
@ -2800,14 +2801,14 @@ public class IndexCreator {
// creator.generateIndexes(new File("e:/Information/OSM maps/osm_map/map.osm"), new ConsoleProgressImplementation(15), null); // creator.generateIndexes(new File("e:/Information/OSM maps/osm_map/map.osm"), new ConsoleProgressImplementation(15), null);
System.out.println("WHOLE GENERATION TIME : " + (System.currentTimeMillis() - time)); System.out.println("WHOLE GENERATION TIME : " + (System.currentTimeMillis() - time)); //$NON-NLS-1$
System.out.println("COORDINATES_SIZE " + BinaryMapIndexWriter.COORDINATES_SIZE + " count " + BinaryMapIndexWriter.COORDINATES_COUNT); System.out.println("COORDINATES_SIZE " + BinaryMapIndexWriter.COORDINATES_SIZE + " count " + BinaryMapIndexWriter.COORDINATES_COUNT); //$NON-NLS-1$ //$NON-NLS-2$
System.out.println("TYPES_SIZE " + BinaryMapIndexWriter.TYPES_SIZE); System.out.println("TYPES_SIZE " + BinaryMapIndexWriter.TYPES_SIZE); //$NON-NLS-1$
System.out.println("ID_SIZE " + BinaryMapIndexWriter.ID_SIZE); System.out.println("ID_SIZE " + BinaryMapIndexWriter.ID_SIZE); //$NON-NLS-1$
System.out.println("- COORD_TYPES_ID SIZE " + (BinaryMapIndexWriter.COORDINATES_SIZE + BinaryMapIndexWriter.TYPES_SIZE + BinaryMapIndexWriter.ID_SIZE)); System.out.println("- COORD_TYPES_ID SIZE " + (BinaryMapIndexWriter.COORDINATES_SIZE + BinaryMapIndexWriter.TYPES_SIZE + BinaryMapIndexWriter.ID_SIZE)); //$NON-NLS-1$
System.out.println("- MAP_DATA_SIZE " + BinaryMapIndexWriter.MAP_DATA_SIZE); System.out.println("- MAP_DATA_SIZE " + BinaryMapIndexWriter.MAP_DATA_SIZE); //$NON-NLS-1$
System.out.println("- STRING_TABLE_SIZE " + BinaryMapIndexWriter.STRING_TABLE_SIZE); System.out.println("- STRING_TABLE_SIZE " + BinaryMapIndexWriter.STRING_TABLE_SIZE); //$NON-NLS-1$
System.out.println("-- MAP_DATA_AND_STRINGS SIZE " + (BinaryMapIndexWriter.MAP_DATA_SIZE + BinaryMapIndexWriter.STRING_TABLE_SIZE)); System.out.println("-- MAP_DATA_AND_STRINGS SIZE " + (BinaryMapIndexWriter.MAP_DATA_SIZE + BinaryMapIndexWriter.STRING_TABLE_SIZE)); //$NON-NLS-1$
} }
} }

View file

@ -38,10 +38,10 @@ public class MapInformationLayer implements MapPanelLayer {
gpsLocation.setOpaque(false); gpsLocation.setOpaque(false);
updateLocationLabel(); updateLocationLabel();
JButton zoomIn = new JButton("+"); JButton zoomIn = new JButton("+"); //$NON-NLS-1$
JButton zoomOut = new JButton("-"); JButton zoomOut = new JButton("-"); //$NON-NLS-1$
areaButton = new JButton(); areaButton = new JButton();
areaButton.setAction(new AbstractAction("Preload area"){ areaButton.setAction(new AbstractAction(Messages.getString("MapInformationLayer.PRELOAD.AREA")){ //$NON-NLS-1$
private static final long serialVersionUID = -5512220294374994021L; private static final long serialVersionUID = -5512220294374994021L;
@Override @Override
@ -88,7 +88,7 @@ public class MapInformationLayer implements MapPanelLayer {
double latitude = map.getLatitude(); double latitude = map.getLatitude();
double longitude = map.getLongitude(); double longitude = map.getLongitude();
int zoom = map.getZoom(); int zoom = map.getZoom();
gpsLocation.setText(MessageFormat.format("Lat : {0,number,#.####}, lon : {1,number,#.####}, zoom : {2}", latitude, longitude, zoom)); gpsLocation.setText(MessageFormat.format("Lat : {0,number,#.####}, lon : {1,number,#.####}, zoom : {2}", latitude, longitude, zoom)); //$NON-NLS-1$
} }
@Override @Override
public void prepareToDraw() { public void prepareToDraw() {

View file

@ -63,13 +63,13 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
public static JMenu getMenuToChooseSource(final MapPanel panel){ public static JMenu getMenuToChooseSource(final MapPanel panel){
final JMenu tiles = new JMenu("Source of tiles"); final JMenu tiles = new JMenu(Messages.getString("MapPanel.SOURCE.OF.TILES")); //$NON-NLS-1$
final JMenu userDefined = new JMenu("User defined"); final JMenu userDefined = new JMenu(Messages.getString("MapPanel.USER.DEFINED")); //$NON-NLS-1$
final List<TileSourceTemplate> list = TileSourceManager.getKnownSourceTemplates(); final List<TileSourceTemplate> list = TileSourceManager.getKnownSourceTemplates();
final List<TileSourceTemplate> udf = TileSourceManager.getUserDefinedTemplates(DataExtractionSettings.getSettings().getTilesDirectory()); final List<TileSourceTemplate> udf = TileSourceManager.getUserDefinedTemplates(DataExtractionSettings.getSettings().getTilesDirectory());
final Map<TileSourceTemplate, JCheckBoxMenuItem> items = new LinkedHashMap<TileSourceTemplate, JCheckBoxMenuItem>(); final Map<TileSourceTemplate, JCheckBoxMenuItem> items = new LinkedHashMap<TileSourceTemplate, JCheckBoxMenuItem>();
tiles.add(userDefined); tiles.add(userDefined);
userDefined.add(new AbstractAction("Create new tile source"){ userDefined.add(new AbstractAction(Messages.getString("MapPanel.NEW.TILE.SRC")){ //$NON-NLS-1$
private static final long serialVersionUID = -8286622335859339130L; private static final long serialVersionUID = -8286622335859339130L;
@Override @Override
@ -137,7 +137,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
JFrame frame = new JFrame("Map view"); JFrame frame = new JFrame(Messages.getString("MapPanel.MAP.VIEW")); //$NON-NLS-1$
try { try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) { } catch (Exception e) {
@ -327,7 +327,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
} }
public String getFileForImage (int x, int y, int zoom, String ext){ public String getFileForImage (int x, int y, int zoom, String ext){
return map.getName() +"/"+zoom+"/"+(x) +"/"+y+ext+".tile"; return map.getName() +"/"+zoom+"/"+(x) +"/"+y+ext+".tile"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
} }
public Image getImageFor(int x, int y, int zoom, boolean loadIfNeeded) throws IOException{ public Image getImageFor(int x, int y, int zoom, boolean loadIfNeeded) throws IOException{
@ -344,13 +344,13 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
remove.flush(); remove.flush();
} }
if(log.isInfoEnabled()){ if(log.isInfoEnabled()){
log.info("Before running gc on map tiles. Total Memory : " + (Runtime.getRuntime().totalMemory() >> 20) + " Mb. Used memory : " log.info("Before running gc on map tiles. Total Memory : " + (Runtime.getRuntime().totalMemory() >> 20) + " Mb. Used memory : " //$NON-NLS-1$ //$NON-NLS-2$
+ ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) >> 20) + " Mb"); + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) >> 20) + " Mb"); //$NON-NLS-1$
} }
System.gc(); System.gc();
if(log.isInfoEnabled()){ if(log.isInfoEnabled()){
log.info("After running gc on map tiles. Total Memory : " + (Runtime.getRuntime().totalMemory() >> 20) + " Mb. Used memory : " log.info("After running gc on map tiles. Total Memory : " + (Runtime.getRuntime().totalMemory() >> 20) + " Mb. Used memory : " //$NON-NLS-1$ //$NON-NLS-2$
+ ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) >> 20) + " Mb"); + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) >> 20) + " Mb"); //$NON-NLS-1$
} }
} }
if (!downloader.isFileCurrentlyDownloaded(en)) { if (!downloader.isFileCurrentlyDownloaded(en)) {
@ -362,7 +362,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
// log.debug("Loaded file : " + file + " " + (System.currentTimeMillis() - time) + " ms"); // log.debug("Loaded file : " + file + " " + (System.currentTimeMillis() - time) + " ms");
// } // }
} catch (IIOException e) { } catch (IIOException e) {
log.error("Eror reading png " + x + " " + y + " zoom : " + zoom, e); log.error("Eror reading png " + x + " " + y + " zoom : " + zoom, e); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
} }
} }
if(loadIfNeeded && cache.get(file) == null){ if(loadIfNeeded && cache.get(file) == null){
@ -393,7 +393,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
images[i][j] = getImageFor(request.xTile, request.yTile, zoom, false); images[i][j] = getImageFor(request.xTile, request.yTile, zoom, false);
repaint(); repaint();
} catch (IOException e) { } catch (IOException e) {
log.error("Eror reading png " + request.xTile + " " + request.yTile + " zoom : " + zoom, e); log.error("Eror reading png " + request.xTile + " " + request.yTile + " zoom : " + zoom, e); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
} }
} }
@ -440,7 +440,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
} }
repaint(); repaint();
} catch (IOException e) { } catch (IOException e) {
log.error("Eror reading png preparing images"); log.error("Eror reading png preparing images"); //$NON-NLS-1$
} }
} }

View file

@ -42,7 +42,7 @@ public class NewTileSourceDialog extends JDialog {
public NewTileSourceDialog(Component parent){ public NewTileSourceDialog(Component parent){
super(JOptionPane.getFrameForComponent(parent), true); super(JOptionPane.getFrameForComponent(parent), true);
setTitle("Create new tile source"); setTitle(Messages.getString("NewTileSourceDialog.CREATE.NEW.TILE")); //$NON-NLS-1$
initDialog(); initDialog();
} }
@ -67,9 +67,9 @@ public class NewTileSourceDialog extends JDialog {
FlowLayout l = new FlowLayout(FlowLayout.RIGHT); FlowLayout l = new FlowLayout(FlowLayout.RIGHT);
JPanel buttonsPane = new JPanel(l); JPanel buttonsPane = new JPanel(l);
okButton = new JButton("OK"); okButton = new JButton("OK"); //$NON-NLS-1$
buttonsPane.add(okButton); buttonsPane.add(okButton);
cancelButton = new JButton("Cancel"); cancelButton = new JButton(Messages.getString("NewTileSourceDialog.CANCEL")); //$NON-NLS-1$
buttonsPane.add(cancelButton); buttonsPane.add(cancelButton);
buttonsPane.setMaximumSize(new Dimension(Short.MAX_VALUE, (int) l.preferredLayoutSize(buttonsPane).getHeight())); buttonsPane.setMaximumSize(new Dimension(Short.MAX_VALUE, (int) l.preferredLayoutSize(buttonsPane).getHeight()));
@ -83,11 +83,11 @@ public class NewTileSourceDialog extends JDialog {
JPanel panel = new JPanel(); JPanel panel = new JPanel();
GridBagLayout l = new GridBagLayout(); GridBagLayout l = new GridBagLayout();
panel.setLayout(l); panel.setLayout(l);
panel.setBorder(BorderFactory.createTitledBorder("Input source")); panel.setBorder(BorderFactory.createTitledBorder(Messages.getString("NewTileSourceDialog.INPUT.SOURCE"))); //$NON-NLS-1$
root.add(panel); root.add(panel);
JLabel label = new JLabel("Name of template : "); JLabel label = new JLabel(Messages.getString("NewTileSourceDialog.NAME")); //$NON-NLS-1$
panel.add(label); panel.add(label);
GridBagConstraints constr = new GridBagConstraints(); GridBagConstraints constr = new GridBagConstraints();
constr.anchor = GridBagConstraints.WEST; constr.anchor = GridBagConstraints.WEST;
@ -97,7 +97,7 @@ public class NewTileSourceDialog extends JDialog {
l.setConstraints(label, constr); l.setConstraints(label, constr);
templateName = new JTextField(); templateName = new JTextField();
templateName.setText("Mapnik example"); templateName.setText(Messages.getString("NewTileSourceDialog.MAPNIK.EXAMPLE")); //$NON-NLS-1$
panel.add(templateName); panel.add(templateName);
constr = new GridBagConstraints(); constr = new GridBagConstraints();
constr.fill = GridBagConstraints.HORIZONTAL; constr.fill = GridBagConstraints.HORIZONTAL;
@ -106,7 +106,7 @@ public class NewTileSourceDialog extends JDialog {
constr.gridy = 0; constr.gridy = 0;
l.setConstraints(templateName, constr); l.setConstraints(templateName, constr);
label = new JLabel("Url template with placeholders {$x}, {$y}, {$z} : "); label = new JLabel(Messages.getString("NewTileSourceDialog.URL.TEMPLATE")); //$NON-NLS-1$
panel.add(label); panel.add(label);
constr = new GridBagConstraints(); constr = new GridBagConstraints();
constr.ipadx = 5; constr.ipadx = 5;
@ -118,7 +118,7 @@ public class NewTileSourceDialog extends JDialog {
templateUrl = new JTextField(); templateUrl = new JTextField();
// Give hint about wms // Give hint about wms
templateUrl.setText("http://tile.openstreetmap.org/{$z}/{$x}/{$y}.png"); templateUrl.setText("http://tile.openstreetmap.org/{$z}/{$x}/{$y}.png"); //$NON-NLS-1$
panel.add(templateUrl); panel.add(templateUrl);
constr = new GridBagConstraints(); constr = new GridBagConstraints();
constr.weightx = 1; constr.weightx = 1;
@ -129,7 +129,7 @@ public class NewTileSourceDialog extends JDialog {
l.setConstraints(templateUrl, constr); l.setConstraints(templateUrl, constr);
label = new JLabel("To add wms service you can use retiling pattern : "); label = new JLabel(Messages.getString("NewTileSourceDialog.ADD.WMS.SERVICE")); //$NON-NLS-1$
panel.add(label); panel.add(label);
constr = new GridBagConstraints(); constr = new GridBagConstraints();
constr.ipadx = 5; constr.ipadx = 5;
@ -141,7 +141,7 @@ public class NewTileSourceDialog extends JDialog {
label = new JLabel(); label = new JLabel();
// Give hint about wms // Give hint about wms
label.setText("http://whoots.mapwarper.net/tms/{$z}/{$x}/{$y}/{layer}/http://path.to.wms.server"); label.setText("http://whoots.mapwarper.net/tms/{$z}/{$x}/{$y}/{layer}/http://path.to.wms.server"); //$NON-NLS-1$
panel.add(label); panel.add(label);
constr = new GridBagConstraints(); constr = new GridBagConstraints();
constr.weightx = 1; constr.weightx = 1;
@ -176,16 +176,16 @@ public class NewTileSourceDialog extends JDialog {
public boolean okPressed(){ public boolean okPressed(){
if(Algoritms.isEmpty(templateName.getText())){ if(Algoritms.isEmpty(templateName.getText())){
JOptionPane.showMessageDialog(this, "Please specify template name" , "Error creating new tile source", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(this, Messages.getString("NewTileSourceDialog.SPECIFY.TEMPLATE.NAME") , Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
return false; return false;
} }
if(Algoritms.isEmpty(templateUrl.getText())){ if(Algoritms.isEmpty(templateUrl.getText())){
JOptionPane.showMessageDialog(this, "Please specify template url" , "Error creating new tile source", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(this, Messages.getString("NewTileSourceDialog.SPECIFY.TEMPLATE.URL") , Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
return false; return false;
} }
String url = templateUrl.getText(); String url = templateUrl.getText();
if(url.indexOf("{$x}") == -1 || url.indexOf("{$y}") == -1 || url.indexOf("{$z}") == -1){ if(url.indexOf("{$x}") == -1 || url.indexOf("{$y}") == -1 || url.indexOf("{$z}") == -1){ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
JOptionPane.showMessageDialog(this, "Please specify all placeholders {$x}, {$y}, {$z} in url" , "Error creating new tile source", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(this, Messages.getString("NewTileSourceDialog.SPECIFY.ALL.PLACEHLDRS") , Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
return false; return false;
} }
File tilesDirectory = DataExtractionSettings.getSettings().getTilesDirectory(); File tilesDirectory = DataExtractionSettings.getSettings().getTilesDirectory();
@ -193,13 +193,13 @@ public class NewTileSourceDialog extends JDialog {
File dir = new File(tilesDirectory, templateName.getText()); File dir = new File(tilesDirectory, templateName.getText());
if(dir.mkdirs()){ if(dir.mkdirs()){
try { try {
FileOutputStream ous = new FileOutputStream(new File(dir, "url")); FileOutputStream ous = new FileOutputStream(new File(dir, "url")); //$NON-NLS-1$
ous.write(url.getBytes("UTF-8")); ous.write(url.getBytes("UTF-8")); //$NON-NLS-1$
ous.close(); ous.close();
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
log.error("Error creating new tile source " + url, e); log.error(Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC") +" " + url, e); //$NON-NLS-1$
} catch (IOException e) { } catch (IOException e) {
log.error("Error creating new tile source " + url, e); log.error(Messages.getString("NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC") +" " + url, e); //$NON-NLS-1$
} }
} }
} }

View file

@ -36,7 +36,7 @@ public class OsmExtractionPreferencesDialog extends JDialog {
public OsmExtractionPreferencesDialog(Component parent){ public OsmExtractionPreferencesDialog(Component parent){
super(JOptionPane.getFrameForComponent(parent), true); super(JOptionPane.getFrameForComponent(parent), true);
setTitle("Preferences"); setTitle(Messages.getString("OsmExtractionPreferencesDialog.PREFERENCES")); //$NON-NLS-1$
initDialog(); initDialog();
} }
@ -62,9 +62,9 @@ public class OsmExtractionPreferencesDialog extends JDialog {
FlowLayout l = new FlowLayout(FlowLayout.RIGHT); FlowLayout l = new FlowLayout(FlowLayout.RIGHT);
JPanel buttonsPane = new JPanel(l); JPanel buttonsPane = new JPanel(l);
okButton = new JButton("OK"); okButton = new JButton(Messages.getString("OsmExtractionPreferencesDialog.OK")); //$NON-NLS-1$
buttonsPane.add(okButton); buttonsPane.add(okButton);
cancelButton = new JButton("Cancel"); cancelButton = new JButton(Messages.getString("OsmExtractionPreferencesDialog.CANCEL")); //$NON-NLS-1$
buttonsPane.add(cancelButton); buttonsPane.add(cancelButton);
buttonsPane.setMaximumSize(new Dimension(Short.MAX_VALUE, (int) l.preferredLayoutSize(buttonsPane).getHeight())); buttonsPane.setMaximumSize(new Dimension(Short.MAX_VALUE, (int) l.preferredLayoutSize(buttonsPane).getHeight()));
@ -76,21 +76,21 @@ public class OsmExtractionPreferencesDialog extends JDialog {
private void createGeneralSection(JPanel root) { private void createGeneralSection(JPanel root) {
JPanel panel = new JPanel(); JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 1, 5, 5)); panel.setLayout(new GridLayout(3, 1, 5, 5));
panel.setBorder(BorderFactory.createTitledBorder("General")); panel.setBorder(BorderFactory.createTitledBorder(Messages.getString("OsmExtractionPreferencesDialog.GENERAL"))); //$NON-NLS-1$
root.add(panel); root.add(panel);
useInternet = new JCheckBox(); useInternet = new JCheckBox();
useInternet.setText("Use internet to download tiles"); useInternet.setText(Messages.getString("OsmExtractionPreferencesDialog.INTERNET.TO.DOWNLOAD.FILES")); //$NON-NLS-1$
useInternet.setSelected(DataExtractionSettings.getSettings().useInternetToLoadImages()); useInternet.setSelected(DataExtractionSettings.getSettings().useInternetToLoadImages());
panel.add(useInternet); panel.add(useInternet);
supressWarning = new JCheckBox(); supressWarning = new JCheckBox();
supressWarning.setText("Supress warnings for duplicated id in osm file"); supressWarning.setText(Messages.getString("OsmExtractionPreferencesDialog.DUPLICATED.ID")); //$NON-NLS-1$
supressWarning.setSelected(DataExtractionSettings.getSettings().isSupressWarningsForDuplicatedId()); supressWarning.setSelected(DataExtractionSettings.getSettings().isSupressWarningsForDuplicatedId());
panel.add(supressWarning); panel.add(supressWarning);
loadWholeOsmInfo = new JCheckBox(); loadWholeOsmInfo = new JCheckBox();
loadWholeOsmInfo.setText("Load whole osm info (to save valid osm file - use in JOSM...)"); loadWholeOsmInfo.setText(Messages.getString("OsmExtractionPreferencesDialog.LOAD.WHOLE.OSM")); //$NON-NLS-1$
loadWholeOsmInfo.setSelected(DataExtractionSettings.getSettings().getLoadEntityInfo()); loadWholeOsmInfo.setSelected(DataExtractionSettings.getSettings().getLoadEntityInfo());
panel.add(loadWholeOsmInfo); panel.add(loadWholeOsmInfo);
panel.setMaximumSize(new Dimension(Short.MAX_VALUE, panel.getPreferredSize().height)); panel.setMaximumSize(new Dimension(Short.MAX_VALUE, panel.getPreferredSize().height));
@ -101,10 +101,10 @@ public class OsmExtractionPreferencesDialog extends JDialog {
JPanel panel = new JPanel(); JPanel panel = new JPanel();
GridBagLayout l = new GridBagLayout(); GridBagLayout l = new GridBagLayout();
panel.setLayout(l); panel.setLayout(l);
panel.setBorder(BorderFactory.createTitledBorder("Normalizing streets")); panel.setBorder(BorderFactory.createTitledBorder(Messages.getString("OsmExtractionPreferencesDialog.NORMALIZE.STREETS"))); //$NON-NLS-1$
root.add(panel); root.add(panel);
JLabel label = new JLabel("Street name suffixes (av., avenue)"); JLabel label = new JLabel(Messages.getString("OsmExtractionPreferencesDialog.NAME.SUFFIXES")); //$NON-NLS-1$
panel.add(label); panel.add(label);
GridBagConstraints constr = new GridBagConstraints(); GridBagConstraints constr = new GridBagConstraints();
constr.anchor = GridBagConstraints.WEST; constr.anchor = GridBagConstraints.WEST;
@ -123,7 +123,7 @@ public class OsmExtractionPreferencesDialog extends JDialog {
constr.gridy = 0; constr.gridy = 0;
l.setConstraints(streetSuffixes, constr); l.setConstraints(streetSuffixes, constr);
label = new JLabel("Street name default suffixes (str., street, rue)"); label = new JLabel(Messages.getString("OsmExtractionPreferencesDialog.DEFAULT.SUFFIXES")); //$NON-NLS-1$
panel.add(label); panel.add(label);
constr = new GridBagConstraints(); constr = new GridBagConstraints();
constr.ipadx = 5; constr.ipadx = 5;

View file

@ -109,7 +109,7 @@ public class ProgressDialog extends JDialog implements IProgress {
pane.add(label, BorderLayout.CENTER); pane.add(label, BorderLayout.CENTER);
add(pane); add(pane);
label.setText("Please waiting..."); label.setText(Messages.getString("OsmExtractionUI.PLEASE.WAIT")); //$NON-NLS-1$
progressBar.setIndeterminate(true); progressBar.setIndeterminate(true);
setSize(550, 100); setSize(550, 100);
double x = getParent().getBounds().getCenterX(); double x = getParent().getBounds().getCenterX();
@ -141,8 +141,8 @@ public class ProgressDialog extends JDialog implements IProgress {
private void updateMessage() { private void updateMessage() {
if(!progressBar.isIndeterminate()){ if(!progressBar.isIndeterminate()){
String format = String.format("\t %.1f %%", progressBar.getValue() * 100f / ((float) progressBar.getMaximum())); String format = String.format("\t %.1f %%", progressBar.getValue() * 100f / ((float) progressBar.getMaximum())); //$NON-NLS-1$
label.setText(taskName + format + (genProgress == null ? "" : (" " + genProgress))); label.setText(taskName + format + (genProgress == null ? "" : (" " + genProgress))); //$NON-NLS-1$ //$NON-NLS-2$
} }
} }
@ -177,19 +177,19 @@ public class ProgressDialog extends JDialog implements IProgress {
@Override @Override
public void startTask(String taskName, int work) { public void startTask(String taskName, int work) {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Memory before task exec: " + Runtime.getRuntime().totalMemory() + " free : " + Runtime.getRuntime().freeMemory()); log.debug("Memory before task exec: " + Runtime.getRuntime().totalMemory() + " free : " + Runtime.getRuntime().freeMemory()); //$NON-NLS-1$ //$NON-NLS-2$
if (previousTaskStarted == 0) { if (previousTaskStarted == 0) {
log.debug(taskName + " started"); log.debug(taskName + " started"); //$NON-NLS-1$
} else { } else {
log.debug(taskName + " started after " + (System.currentTimeMillis() - previousTaskStarted) + " ms"); log.debug(taskName + " started after " + (System.currentTimeMillis() - previousTaskStarted) + " ms"); //$NON-NLS-1$ //$NON-NLS-2$
} }
} }
previousTaskStarted = System.currentTimeMillis(); previousTaskStarted = System.currentTimeMillis();
if(taskName == null){ if(taskName == null){
taskName = ""; taskName = ""; //$NON-NLS-1$
} }
label.setText(taskName + (genProgress == null ? "" : (" "+genProgress))); label.setText(taskName + (genProgress == null ? "" : (" "+genProgress))); //$NON-NLS-1$ //$NON-NLS-2$
this.taskName = taskName; this.taskName = taskName;
startWork(work); startWork(work);
} }

View file

@ -56,7 +56,7 @@ public class TileBundleDownloadDialog extends JDialog {
selectionArea = panel.getSelectionArea(); selectionArea = panel.getSelectionArea();
zoom = panel.getZoom(); zoom = panel.getZoom();
tilesLocation = panel.getTilesLocation(); tilesLocation = panel.getTilesLocation();
setTitle("Download bundle tiles"); setTitle(Messages.getString("TileBundleDownloadDialog.DOWNLOAD.BUNDLE.TILES")); //$NON-NLS-1$
initDialog(); initDialog();
} }
@ -89,14 +89,14 @@ public class TileBundleDownloadDialog extends JDialog {
JPanel zoomControls = new JPanel(); JPanel zoomControls = new JPanel();
zoomControls.setLayout(new BoxLayout(zoomControls, BoxLayout.X_AXIS)); zoomControls.setLayout(new BoxLayout(zoomControls, BoxLayout.X_AXIS));
JLabel lab = new JLabel("Start zoom level : "); JLabel lab = new JLabel(Messages.getString("TileBundleDownloadDialog.START.ZOOM.LEVEL")); //$NON-NLS-1$
zoomControls.add(lab); zoomControls.add(lab);
startSpinner = new JSpinner(getSpinnerModel(map.getMinimumZoomSupported(), zoom)); startSpinner = new JSpinner(getSpinnerModel(map.getMinimumZoomSupported(), zoom));
zoomControls.add(startSpinner); zoomControls.add(startSpinner);
startSpinner.setMaximumSize(new Dimension(15, startSpinner.getMaximumSize().height)); startSpinner.setMaximumSize(new Dimension(15, startSpinner.getMaximumSize().height));
zoomControls.add(Box.createHorizontalStrut(15)); zoomControls.add(Box.createHorizontalStrut(15));
lab = new JLabel("End zoom level : "); lab = new JLabel(Messages.getString("TileBundleDownloadDialog.END.ZOOM.LEVEL")); //$NON-NLS-1$
zoomControls.add(lab); zoomControls.add(lab);
endSpinner = new JSpinner(getSpinnerModel(zoom, map.getMaximumZoomSupported())); endSpinner = new JSpinner(getSpinnerModel(zoom, map.getMaximumZoomSupported()));
zoomControls.add(endSpinner); zoomControls.add(endSpinner);
@ -108,13 +108,13 @@ public class TileBundleDownloadDialog extends JDialog {
JPanel buttonControls = new JPanel(); JPanel buttonControls = new JPanel();
buttonControls.setLayout(new BoxLayout(buttonControls, BoxLayout.X_AXIS)); buttonControls.setLayout(new BoxLayout(buttonControls, BoxLayout.X_AXIS));
buttonControls.add(Box.createHorizontalGlue()); buttonControls.add(Box.createHorizontalGlue());
specifyFolder = new JButton("Specify different folder"); specifyFolder = new JButton(Messages.getString("TileBundleDownloadDialog.SPECIFY.FOLDER")); //$NON-NLS-1$
buttonControls.add(specifyFolder); buttonControls.add(specifyFolder);
buttonControls.add(Box.createHorizontalStrut(3)); buttonControls.add(Box.createHorizontalStrut(3));
downloadButton = new JButton("Download tiles"); downloadButton = new JButton(Messages.getString("TileBundleDownloadDialog.DOWNLOAD.TILES")); //$NON-NLS-1$
buttonControls.add(downloadButton); buttonControls.add(downloadButton);
buttonControls.add(Box.createHorizontalStrut(3)); buttonControls.add(Box.createHorizontalStrut(3));
cancelButton = new JButton("Cancel"); cancelButton = new JButton(Messages.getString("TileBundleDownloadDialog.CANCEL")); //$NON-NLS-1$
buttonControls.add(cancelButton); buttonControls.add(cancelButton);
pane.add(buttonControls, BorderLayout.SOUTH); pane.add(buttonControls, BorderLayout.SOUTH);
@ -156,7 +156,7 @@ public class TileBundleDownloadDialog extends JDialog {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser(); JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Choose working directory"); fc.setDialogTitle(Messages.getString("TileBundleDownloadDialog.CHOOSE.DIRECTORY")); //$NON-NLS-1$
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(tilesLocation != null){ if(tilesLocation != null){
fc.setCurrentDirectory(tilesLocation); fc.setCurrentDirectory(tilesLocation);
@ -173,7 +173,7 @@ public class TileBundleDownloadDialog extends JDialog {
public void downloadTiles(){ public void downloadTiles(){
setVisible(false); setVisible(false);
final ProgressDialog progressDialog = new ProgressDialog(this, "Downloading tiles"); final ProgressDialog progressDialog = new ProgressDialog(this, Messages.getString("TileBundleDownloadDialog.DOWNLOADING.TILES")); //$NON-NLS-1$
int numberTiles = 0; int numberTiles = 0;
final int startZoom = (Integer) startSpinner.getValue(); final int startZoom = (Integer) startSpinner.getValue();
final int endZoom = (Integer) endSpinner.getValue(); final int endZoom = (Integer) endSpinner.getValue();
@ -190,7 +190,7 @@ public class TileBundleDownloadDialog extends JDialog {
@Override @Override
public void run() { public void run() {
progressDialog.startTask("Loading...", number); progressDialog.startTask(Messages.getString("TileBundleDownloadDialog.LOADING"), number); //$NON-NLS-1$
for (int zoom = startZoom; zoom <= endZoom; zoom++) { for (int zoom = startZoom; zoom <= endZoom; zoom++) {
int x1 = (int) MapUtils.getTileNumberX(zoom, selectionArea.getLon1()); int x1 = (int) MapUtils.getTileNumberX(zoom, selectionArea.getLon1());
int x2 = (int) MapUtils.getTileNumberX(zoom, selectionArea.getLon2()); int x2 = (int) MapUtils.getTileNumberX(zoom, selectionArea.getLon2());
@ -249,7 +249,7 @@ public class TileBundleDownloadDialog extends JDialog {
} }
public String getFileForImage (int x, int y, int zoom, String ext){ public String getFileForImage (int x, int y, int zoom, String ext){
return map.getName() +"/"+zoom+"/"+(x) +"/"+y+ext+".tile"; return map.getName() +"/"+zoom+"/"+(x) +"/"+y+ext+".tile"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
} }
@ -263,7 +263,7 @@ public class TileBundleDownloadDialog extends JDialog {
numberTiles += (x2 - x1 + 1) * (y2 - y1 + 1); numberTiles += (x2 - x1 + 1) * (y2 - y1 + 1);
} }
String text = MessageFormat.format("Request to download {0} tiles from ''{1}'' (approximately {2} Mb)", String text = MessageFormat.format(Messages.getString("TileBundleDownloadDialog.REQUEST.DOWNLOAD"), //$NON-NLS-1$
numberTiles, map.getName(), (double)numberTiles*12/1000); numberTiles, map.getName(), (double)numberTiles*12/1000);
label.setText(text); label.setText(text);
} }

View file

@ -1,3 +1,43 @@
IndexCreator.INDEX_CITIES=Indexing cities...
IndexCreator.INDEX_LO_LEVEL_WAYS=Indexing low level ways...
IndexCreator.LOADING_FILE=Loading file
IndexCreator.PACK_RTREE_MAP=Packing rtree map data...
IndexCreator.PACK_RTREE_TRANSP=Packing rtree transport data...
IndexCreator.PREINDEX_ADRESS_MAP=Preindexing address and map ways...
IndexCreator.PROCESS_OSM_NODES=Processing osm nodes...
IndexCreator.PROCESS_OSM_REL=Processing osm relations...
IndexCreator.PROCESS_OSM_WAYS=Processing osm ways...
IndexCreator.REGISTER_PCODES=Registering postcodes...
IndexCreator.SERIALIZING_ADRESS=Serializing city addresses...
IndexCreator.WRITE_ADDRESS_INDEX=Writing address index to binary file...
IndexCreator.WRITE_MAP_INDEX=Writing map index to binary file...
IndexCreator.WRITE_TRANSP_INDEX=Writing transport index to binary file...
MapInformationLayer.PRELOAD.AREA=Preload area
MapPanel.MAP.VIEW=Map view
MapPanel.NEW.TILE.SRC=Create new tile source
MapPanel.SOURCE.OF.TILES=Source of tiles
MapPanel.USER.DEFINED=User defined
NewTileSourceDialog.ADD.WMS.SERVICE=To add wms service you can use retiling pattern :
NewTileSourceDialog.CANCEL=Cancel
NewTileSourceDialog.CREATE.NEW.TILE=Create new tile source
NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC=Error creating new tile source
NewTileSourceDialog.INPUT.SOURCE=Input source
NewTileSourceDialog.MAPNIK.EXAMPLE=Mapnik example
NewTileSourceDialog.NAME=Name of template :
NewTileSourceDialog.SPECIFY.ALL.PLACEHLDRS=Please specify all placeholders {$x}, {$y}, {$z} in url
NewTileSourceDialog.SPECIFY.TEMPLATE.NAME=Please specify template name
NewTileSourceDialog.SPECIFY.TEMPLATE.URL=Please specify template url
NewTileSourceDialog.URL.TEMPLATE=Url template with placeholders {$x}, {$y}, {$z} :
OsmExtractionPreferencesDialog.DEFAULT.SUFFIXES=Street name default suffixes (str., street, rue)
OsmExtractionPreferencesDialog.DUPLICATED.ID=Supress warnings for duplicated id in osm file
OsmExtractionPreferencesDialog.GENERAL=General
OsmExtractionPreferencesDialog.INTERNET.TO.DOWNLOAD.FILES=Use internet to download tiles
OsmExtractionPreferencesDialog.LOAD.WHOLE.OSM=Load whole osm info (to save valid osm file - use in JOSM...)
OsmExtractionPreferencesDialog.NAME.SUFFIXES=Street name suffixes (av., avenue)
OsmExtractionPreferencesDialog.NORMALIZE.STREETS=Normalizing streets
OsmExtractionPreferencesDialog.OK=OK
OsmExtractionPreferencesDialog.PREFERENCES=Preferences
OsmExtractionPreferencesDialog.CANCEL=Cancel
OsmExtractionUI.ADDRESS=address OsmExtractionUI.ADDRESS=address
OsmExtractionUI.BUILD_ADDRESS=Build Address index OsmExtractionUI.BUILD_ADDRESS=Build Address index
OsmExtractionUI.BUILD_MAP=Build map index OsmExtractionUI.BUILD_MAP=Build map index
@ -26,6 +66,7 @@ OsmExtractionUI.OPEN_LOG_FILE_MANUALLY=Open log file manually
OsmExtractionUI.OSM_FILES=Osm Files (*.bz2, *.osm, *.pbf) OsmExtractionUI.OSM_FILES=Osm Files (*.bz2, *.osm, *.pbf)
OsmExtractionUI.OSMAND_MAP_CREATOR=OsmAnd Map Creator OsmExtractionUI.OSMAND_MAP_CREATOR=OsmAnd Map Creator
OsmExtractionUI.OSMAND_MAP_CREATOR_FILE=OsmAnd Map Creator - OsmExtractionUI.OSMAND_MAP_CREATOR_FILE=OsmAnd Map Creator -
OsmExtractionUI.PLEASE.WAIT=Please waiting...
OsmExtractionUI.POI=POI OsmExtractionUI.POI=POI
OsmExtractionUI.REGION=Region OsmExtractionUI.REGION=Region
OsmExtractionUI.SAVING_OSM_FILE=Saving osm file OsmExtractionUI.SAVING_OSM_FILE=Saving osm file
@ -38,3 +79,13 @@ OsmExtractionUI.UNABLE_OPEN_FILE=Failed to open log file
OsmExtractionUI.WORKING_DIR=Working directory : OsmExtractionUI.WORKING_DIR=Working directory :
OsmExtractionUI.WORKING_DIR_UNSPECIFIED=<working directory unspecified> OsmExtractionUI.WORKING_DIR_UNSPECIFIED=<working directory unspecified>
OsmExtractionUI.WORKING_DIRECTORY=Working directory : OsmExtractionUI.WORKING_DIRECTORY=Working directory :
TileBundleDownloadDialog.CANCEL=Cancel
TileBundleDownloadDialog.DOWNLOAD.BUNDLE.TILES=Download bundle tiles
TileBundleDownloadDialog.DOWNLOAD.TILES=Download tiles
TileBundleDownloadDialog.DOWNLOADING.TILES=Downloading tiles
TileBundleDownloadDialog.END.ZOOM.LEVEL=End zoom level :
TileBundleDownloadDialog.CHOOSE.DIRECTORY=Choose working directory
TileBundleDownloadDialog.LOADING=Loading...
TileBundleDownloadDialog.REQUEST.DOWNLOAD=Request to download {0} tiles from ''{1}'' (approximately {2} Mb)
TileBundleDownloadDialog.SPECIFY.FOLDER=Specify different folder
TileBundleDownloadDialog.START.ZOOM.LEVEL=Start zoom level :

View file

@ -1,40 +1,91 @@
OsmExtractionUI.ADDRESS=adresa IndexCreator.INDEX_CITIES=Indexovanie miest...
OsmExtractionUI.BUILD_ADDRESS=Vytvori\u0165 index adries IndexCreator.INDEX_LO_LEVEL_WAYS=Indexovanie n\u00edzko\u00farov\u0148ov\u00fdch ciest...
OsmExtractionUI.BUILD_MAP=Vytvori\u0165 index mapy IndexCreator.LOADING_FILE=Na\u010d\u00edtava sa s\u00fabor
OsmExtractionUI.BUILD_POI=Vytvori\u0165 index POI IndexCreator.PACK_RTREE_MAP=Balenie rtree mapov\u00fdch \u00fadajov...
OsmExtractionUI.BUILD_TRANSPORT=Vytvori\u0165 index dopravy IndexCreator.PACK_RTREE_TRANSP=Balenie rtree dopravn\u00fdch \u00fadajov...
OsmExtractionUI.CHOOSE_OSM_FILE=Vyberte OSM s\u00fabor IndexCreator.PREINDEX_ADRESS_MAP=Preindexovanie adries a ciest mapy...
OsmExtractionUI.CHOOSE_WORKING_DIR=Vyberte pracovn\u00fd adres\u00e1r IndexCreator.PROCESS_OSM_NODES=Spracov\u00e1vanie OSM uzlov...
OsmExtractionUI.CREATING_INDEX=Vytv\u00e1ra sa index IndexCreator.PROCESS_OSM_REL=Spracov\u00e1vanie OSM rel\u00e1ci\u00ed...
OsmExtractionUI.GENERATION_DATA=Gener\u00e1cia \u00fadajov IndexCreator.PROCESS_OSM_WAYS=Spracov\u00e1vanie OSM ciest...
OsmExtractionUI.INDEXES_FOR=Indexy pre IndexCreator.REGISTER_PCODES=Registrovanie PS\u010c...
OsmExtractionUI.LOADING_OSM_FILE=Na\u010d\u00edtavanie OSM s\u00faboru IndexCreator.SERIALIZING_ADRESS=S\u00e9riovanie adries miest...
OsmExtractionUI.LOG_FILE_NOT_FOUND=S\u00fabor z\u00e1znamu nen\u00e1jden\u00fd IndexCreator.WRITE_ADDRESS_INDEX=Zapisovanie indexu adries do bin\u00e1rneho s\u00faboru...
OsmExtractionUI.MAP=mapa IndexCreator.WRITE_MAP_INDEX=Zapisovanie indexu mapy do bin\u00e1rneho s\u00faboru...
OsmExtractionUI.MENU_ABOUT=O programe IndexCreator.WRITE_TRANSP_INDEX=Zapisovanie indexu dopravy do bin\u00e1rneho s\u00faboru...
OsmExtractionUI.MENU_ABOUT_2=O programe... MapInformationLayer.PRELOAD.AREA=Stiahnu\u0165 oblas\u0165
OsmExtractionUI.MENU_CREATE_SQLITE=Vytvori\u0165 sqlite datab\u00e1zu MapPanel.MAP.VIEW=Zobrazenie mapy
OsmExtractionUI.MENU_EXIT=Skon\u010di\u0165 MapPanel.NEW.TILE.SRC=Vytvori\u0165 nov\u00fd zdroj dla\u017ed\u00edc
OsmExtractionUI.MENU_FILE=S\u00fabor MapPanel.SOURCE.OF.TILES=Zdroj dla\u017ed\u00edc
OsmExtractionUI.MENU_OPEN_LOG=Otvori\u0165 s\u00fabor z\u00e1znamu... MapPanel.USER.DEFINED=U\u017e\u00edvate\u013eom definovan\u00fd
OsmExtractionUI.MENU_SELECT_FILE=Vybra\u0165 OSM s\u00fabor... NewTileSourceDialog.ADD.WMS.SERVICE=Na pridanie wms slu\u017eby m\u00f4\u017eete pou\u017ei\u0165 sie\u0165ov\u00fd vzor:
OsmExtractionUI.MENU_SELECT_OSM_FILE_AREA=Vybra\u0165 OSM s\u00fabor pre ur\u010den\u00fa oblas\u0165... NewTileSourceDialog.CANCEL=Zru\u0161i\u0165
OsmExtractionUI.MENU_SETTINGS=Nastavenia... NewTileSourceDialog.CREATE.NEW.TILE=Vytvorenie nov\u00e9ho zdroja dla\u017ed\u00edc
OsmExtractionUI.MENU_WINDOW=Okno NewTileSourceDialog.ERROR.CREATING.NEW.TILE.SRC=Chyba po\u010das vytv\u00e1rania nov\u00e9ho zdroja dla\u017ed\u00edc
OsmExtractionUI.NORMALIZE_STREETS=Normaliz\u00e1cia ul\u00edc NewTileSourceDialog.INPUT.SOURCE=Vstupn\u00fd zdroj
OsmExtractionUI.OPEN_LOG_FILE_MANUALLY=Otvori\u0165 s\u00fabor z\u00e1znamu ru\u010dne NewTileSourceDialog.MAPNIK.EXAMPLE=Napr\u00edklad Mapnik
OsmExtractionUI.OSM_FILES=OSM s\u00fabory (*.bz2, *.osm, *.pbf) NewTileSourceDialog.NAME=N\u00e1zov \u0161abl\u00f3ny:
OsmExtractionUI.OSMAND_MAP_CREATOR=Tvorca OsmAnd mapy NewTileSourceDialog.SPECIFY.ALL.PLACEHLDRS=Pros\u00edm, ur\u010dite v\u0161etky premenn\u00e9 {$x}, {$y}, {$z} v url
OsmExtractionUI.OSMAND_MAP_CREATOR_FILE=Tvorca OsmAnd mapy - NewTileSourceDialog.SPECIFY.TEMPLATE.NAME=Pros\u00edm, zadajte n\u00e1zov \u0161abl\u00f3ny
OsmExtractionUI.POI=POI NewTileSourceDialog.SPECIFY.TEMPLATE.URL=Pros\u00edm, zadajte url vzoru
OsmExtractionUI.REGION=Oblas\u0165 NewTileSourceDialog.URL.TEMPLATE=Vzor url s premenn\u00fdmi {$x}, {$y}, {$z} :
OsmExtractionUI.SAVING_OSM_FILE=Uklad\u00e1 sa OSM s\u00fabor OsmExtractionPreferencesDialog.DEFAULT.SUFFIXES=\u0160tandardn\u00e9 pr\u00edpony n\u00e1zvov ul\u00edc (str., street, rue, ulica)
OsmExtractionUI.SELECT_AREA=Vybra\u0165 oblas\u0165 OsmExtractionPreferencesDialog.DUPLICATED.ID=Zak\u00e1za\u0165 varovania na duplik\u00e1tne id v OSM s\u00fabore
OsmExtractionUI.SELECT_AREA_TO_FILTER=Vybra\u0165 oblas\u0165 na vyfiltrovanie OsmExtractionPreferencesDialog.GENERAL=V\u0161eobecn\u00e9
OsmExtractionUI.SPECIFY_WORKING_DIR=Ur\u010di\u0165 pracovn\u00fd adres\u00e1r... OsmExtractionPreferencesDialog.INTERNET.TO.DOWNLOAD.FILES=Pou\u017ei\u0165 internet na stiahnutie dla\u017ed\u00edc mapy
OsmExtractionUI.SUCCESFULLY_CREATED=\ - \u00faspe\u0161ne vytvoren\u00e9 v pracovnom adres\u00e1ry. OsmExtractionPreferencesDialog.LOAD.WHOLE.OSM=Na\u010d\u00edta\u0165 v\u0161etky OSM inform\u00e1cie (na ulo\u017eenie platn\u00e9ho OSM s\u00faboru - pou\u017eitie v JOSM...)
OsmExtractionUI.TRANSPORT=doprava OsmExtractionPreferencesDialog.NAME.SUFFIXES=Pr\u00edpona n\u00e1zvov ul\u00edc (av., avenue, ulica)
OsmExtractionUI.UNABLE_OPEN_FILE=Zlyhalo otv\u00e1ranie z\u00e1znamov\u00e9ho s\u00faboru OsmExtractionPreferencesDialog.NORMALIZE.STREETS=Normaliz\u00e1cia ul\u00edc
OsmExtractionUI.WORKING_DIR=Pracovn\u00fd adres\u00e1r : OsmExtractionPreferencesDialog.OK=OK
OsmExtractionUI.WORKING_DIR_UNSPECIFIED=<pracovn\u00fd adres\u00e1r nie je ur\u010den\u00fd> OsmExtractionPreferencesDialog.PREFERENCES=Vlastnosti
OsmExtractionUI.WORKING_DIRECTORY=Pracovn\u00fd adres\u00e1r : OsmExtractionPreferencesDialog.CANCEL=Zru\u0161i\u0165
OsmExtractionUI.ADDRESS=adresa
OsmExtractionUI.BUILD_ADDRESS=Vytvori\u0165 index adries
OsmExtractionUI.BUILD_MAP=Vytvori\u0165 index mapy
OsmExtractionUI.BUILD_POI=Vytvori\u0165 index POI
OsmExtractionUI.BUILD_TRANSPORT=Vytvori\u0165 index dopravy
OsmExtractionUI.CHOOSE_OSM_FILE=Vyberte OSM s\u00fabor
OsmExtractionUI.CHOOSE_WORKING_DIR=Vyberte pracovn\u00fd adres\u00e1r
OsmExtractionUI.CREATING_INDEX=Vytv\u00e1ra sa index
OsmExtractionUI.GENERATION_DATA=Gener\u00e1cia \u00fadajov
OsmExtractionUI.INDEXES_FOR=Indexy pre
OsmExtractionUI.LOADING_OSM_FILE=Na\u010d\u00edtavanie OSM s\u00faboru
OsmExtractionUI.LOG_FILE_NOT_FOUND=S\u00fabor z\u00e1znamu nen\u00e1jden\u00fd
OsmExtractionUI.MAP=mapa
OsmExtractionUI.MENU_ABOUT=O programe
OsmExtractionUI.MENU_ABOUT_2=O programe...
OsmExtractionUI.MENU_CREATE_SQLITE=Vytvori\u0165 sqlite datab\u00e1zu
OsmExtractionUI.MENU_EXIT=Skon\u010di\u0165
OsmExtractionUI.MENU_FILE=S\u00fabor
OsmExtractionUI.MENU_OPEN_LOG=Otvori\u0165 s\u00fabor z\u00e1znamu...
OsmExtractionUI.MENU_SELECT_FILE=Vybra\u0165 OSM s\u00fabor...
OsmExtractionUI.MENU_SELECT_OSM_FILE_AREA=Vybra\u0165 OSM s\u00fabor pre ur\u010den\u00fa oblas\u0165...
OsmExtractionUI.MENU_SETTINGS=Nastavenia...
OsmExtractionUI.MENU_WINDOW=Okno
OsmExtractionUI.NORMALIZE_STREETS=Normaliz\u00e1cia ul\u00edc
OsmExtractionUI.OPEN_LOG_FILE_MANUALLY=otvorte s\u00fabor z\u00e1znamu ru\u010dne
OsmExtractionUI.OSM_FILES=OSM s\u00fabory (*.bz2, *.osm, *.pbf)
OsmExtractionUI.OSMAND_MAP_CREATOR=Tvorca OsmAnd mapy
OsmExtractionUI.OSMAND_MAP_CREATOR_FILE=Tvorca OsmAnd mapy -
OsmExtractionUI.PLEASE.WAIT=Pros\u00edm \u010dakajte...
OsmExtractionUI.POI=POI
OsmExtractionUI.REGION=Oblas\u0165
OsmExtractionUI.SAVING_OSM_FILE=Uklad\u00e1 sa OSM s\u00fabor
OsmExtractionUI.SELECT_AREA=Vybra\u0165 oblas\u0165
OsmExtractionUI.SELECT_AREA_TO_FILTER=Vybra\u0165 oblas\u0165 na vyfiltrovanie
OsmExtractionUI.SPECIFY_WORKING_DIR=Ur\u010di\u0165 pracovn\u00fd adres\u00e1r...
OsmExtractionUI.SUCCESFULLY_CREATED=\ - \u00faspe\u0161ne vytvoren\u00e9 v pracovnom adres\u00e1ry.
OsmExtractionUI.TRANSPORT=doprava
OsmExtractionUI.UNABLE_OPEN_FILE=Zlyhalo otv\u00e1ranie z\u00e1znamov\u00e9ho s\u00faboru
OsmExtractionUI.WORKING_DIR=Pracovn\u00fd adres\u00e1r :
OsmExtractionUI.WORKING_DIR_UNSPECIFIED=<pracovn\u00fd adres\u00e1r nie je ur\u010den\u00fd>
OsmExtractionUI.WORKING_DIRECTORY=Pracovn\u00fd adres\u00e1r :
TileBundleDownloadDialog.CANCEL=Zru\u0161i\u0165
TileBundleDownloadDialog.DOWNLOAD.BUNDLE.TILES=Stiahnutie bal\u00edka dla\u017ed\u00edc
TileBundleDownloadDialog.DOWNLOAD.TILES=Stiahnu\u0165 dla\u017edice
TileBundleDownloadDialog.DOWNLOADING.TILES=S\u0165ahuj\u00fa sa dla\u017edice
TileBundleDownloadDialog.END.ZOOM.LEVEL=Kon\u010den\u00fd zoom:
TileBundleDownloadDialog.CHOOSE.DIRECTORY=Vybra\u0165 pracovn\u00fd adres\u00e1r
TileBundleDownloadDialog.LOADING=Na\u010d\u00edtava sa...
TileBundleDownloadDialog.REQUEST.DOWNLOAD=Po\u017eiadavka na stiahnutie {0} dla\u017ed\u00edc z ''{1}'' (odhadom {2} Mb)
TileBundleDownloadDialog.SPECIFY.FOLDER=Ur\u010di\u0165 in\u00fa zlo\u017eku
TileBundleDownloadDialog.START.ZOOM.LEVEL=Za\u010diato\u010dn\u00fd zoom: