PreparedStatement ps1 = con.prepareStatement("SELECT idref,name,lat,lon FROM bus_stop");\r
PreparedStatement ps2 = con.prepareStatement("SELECT count(idref) FROM existing_data where (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?)");\r
PreparedStatement ps3 = con.prepareStatement("UPDATE bus_stop SET fixed=? WHERE idref=?");\r
+ PreparedStatement ps4 = con.prepareStatement("SELECT count(idref) FROM existing_data where (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?) and (name = ?)");\r
ResultSet rset1 = ps1.executeQuery();\r
while (rset1.next()) {\r
String idref = rset1.getString("idref");\r
Double lat = rset1.getDouble("lat");\r
Double lon = rset1.getDouble("lon");\r
\r
- // 指定の緯度経度を中心とする半径75m四方の矩形領域\r
+ // 指定の緯度経度を中心とする半径150x2m四方の矩形領域\r
System.out.print(idref + "("+ name + ") ....");\r
- RectArea rect = new RectArea(lat, lon, NEER); // 100m 四方\r
+ RectArea rect = new RectArea(lat, lon, NEER); // 300m 四方\r
ps2.setDouble(1, rect.minlat);\r
ps2.setDouble(2, rect.maxlat);\r
ps2.setDouble(3, rect.minlon);\r
ResultSet rset2 = ps2.executeQuery();\r
if (rset2.next()) {\r
int count = rset2.getInt(1);\r
- System.out.println("...."+ count);\r
- ps3.setInt(1, count);\r
- ps3.setString(2, idref);\r
- ps3.executeUpdate();\r
+ if (count > 0) {\r
+ System.out.println("."+ count);\r
+ ps3.setInt(1, count);\r
+ ps3.setString(2, idref);\r
+ ps3.executeUpdate();\r
+ }\r
+ else {\r
+ // 指定の緯度経度を中心とする半径150x4m四方の矩形領域\r
+ System.out.print("***");\r
+ rect = new RectArea(lat, lon, NEER*2); // 600m 四方\r
+ ps4.setDouble(1, rect.minlat);\r
+ ps4.setDouble(2, rect.maxlat);\r
+ ps4.setDouble(3, rect.minlon);\r
+ ps4.setDouble(4, rect.maxlon);\r
+ ps4.setString(5, name);\r
+ ResultSet rset4 = ps4.executeQuery();\r
+ if (rset4.next()) {\r
+ count = rset4.getInt(1);\r
+ System.out.println(".."+ count);\r
+ ps3.setInt(1, count);\r
+ ps3.setString(2, idref);\r
+ ps3.executeUpdate();\r
+ }\r
+ rset4.close();\r
+ }\r
}\r
rset2.close();\r
}\r
String idrefStr = "";\r
String latStr = "";\r
String lonStr = "";\r
- PreparedStatement ps5 = con.prepareStatement("INSERT INTO existing_data (idref,lat,lon) VALUES (?,?,?)");\r
+ String nameStr = "";\r
+ PreparedStatement ps5 = con.prepareStatement("INSERT INTO existing_data (idref,lat,lon, name) VALUES (?,?,?,?)");\r
\r
NamedNodeMap nodeMap = node.getAttributes();\r
if (null != nodeMap) {\r
}\r
}\r
\r
+ NodeList nodes = node.getChildNodes();\r
+ for (int i = 0; i < nodes.getLength(); i++) {\r
+ Node node2 = nodes.item(i);\r
+ if (node2.getNodeName().equals("tag")) {\r
+ NamedNodeMap nodeMap2 = node2.getAttributes();\r
+ if (null != nodeMap2) {\r
+ String key = null;\r
+ String value = null;\r
+ for (int j=0; j < nodeMap2.getLength(); j++) {\r
+ if (nodeMap2.item(j).getNodeName().equals("k")) {\r
+ key = nodeMap2.item(j).getNodeValue();\r
+ }\r
+ else if (nodeMap2.item(j).getNodeName().equals("v")) {\r
+ value = nodeMap2.item(j).getNodeValue();\r
+ }\r
+ }\r
+ \r
+ if ((key != null) && key.toLowerCase().equals("name") && (value != null)) {\r
+ nameStr = value;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
// idref と nameStr をデータベースに格納する\r
- System.out.println("import existing_data : "+ idrefStr +" ("+ latStr +","+ lonStr+")");\r
+ System.out.println("import existing_data : "+ idrefStr +" ("+ latStr +","+ lonStr+")"+ nameStr);\r
ps5.setString(1, idrefStr);\r
ps5.setDouble(2, Double.parseDouble(latStr));\r
ps5.setDouble(3, Double.parseDouble(lonStr));\r
+ ps5.setString(4, nameStr);\r
ps5.executeUpdate();\r
ps5.close();\r
}\r