diff --git a/src/osm/jp/coverage/fuel/DbExist.java b/src/osm/jp/coverage/fuel/DbExist.java index cd14d37..0af32eb 100644 --- a/src/osm/jp/coverage/fuel/DbExist.java +++ b/src/osm/jp/coverage/fuel/DbExist.java @@ -4,6 +4,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import jp.co.areaweb.tools.csv.CsvRecord; import jp.co.areaweb.tools.database.*; import osm.jp.api.Osmdb; @@ -73,7 +74,7 @@ *
{@code 
      *  (
      *    node[disused:amenity=fuel](35.42,139.39,35.45,139.42);
-     *    way[disused:amenity=fuel](35.42,139.39,35.45,139.42);
+     *    way[amenity=fuel](35.42,139.39,35.45,139.42);
      *    node[amenity=fuel](35.42,139.39,35.45,139.42);
      *    (way[amenity=fuel](35.42,139.39,35.45,139.42);>;);
      *  );
@@ -101,7 +102,7 @@
         // BRANDなし → 1ポイント
         // FIXMEあり → 1ポイント
         readExisting(hsqldb, "\"where amenity='fuel'\"", POINT_BRAND | POINT_FIXME);
-        readExistingSub(hsqldb, "disused:amenity", "fuel", POINT_BRAND | POINT_FIXME);
+        //readExistingSub(hsqldb, "disused:amenity", "fuel", POINT_BRAND | POINT_FIXME);
     }
     
     /**
@@ -187,15 +188,38 @@
         try {
             osmdb =  DatabaseTool.openDb("osmdb");
             
-            PreparedStatement ps1 = osmdb.prepareStatement("SELECT osm_id, brand, name, disused, tags FROM planet_osm_point, planet_osm_nodes WHERE osm_id=id and ? = ANY (tags) and ? = ANY (tags)");
+            PreparedStatement ps1 = osmdb.prepareStatement("SELECT osm_id, brand, name, disused, tags FROM planet_osm_point, planet_osm_nodes WHERE osm_id=id AND tags=ANY('"+ kStr +"')");
             ps1.setString(1, kStr);
             ps1.setString(2, vStr);
             try (ResultSet rset1 = ps1.executeQuery()) {
                 while (rset1.next()) {
-                    counter += importExistingNode(hsqldb, osmdb, rset1, point);
+                    String tags = rset1.getString("tags");
+                    if (tags != null) {
+                        tags = tags.substring(1);
+                        tags = tags.substring(0, tags.length()-1);
+                        CsvRecord csv = new CsvRecord();
+                        csv.analizeRecord(tags);
+                        
+                        boolean key = false;
+                        for (String str : csv) {
+                            if (key) {
+                                if (str.equals(vStr)) {
+                                    counter += importExistingNode(hsqldb, osmdb, rset1, point);
+                                    break;
+                                }
+                                key = false;
+                            }
+                            else {
+                                if (str.equals(kStr)) {
+                                    key = true;
+                                }
+                            }
+                        }
+                    }
                 }
             }
-            PreparedStatement ps2 = osmdb.prepareStatement("SELECT osm_id,brand,disused,name,ST_Y(ST_Transform(ST_Centroid(way),4326)) as lat,ST_X(ST_Transform(ST_Centroid(way),4326)) as lon FROM planet_osm_polygon, planet_osm_nodes  WHERE osm_id=id and ? = ANY (tags) and ? = ANY (tags)");
+            /*
+            PreparedStatement ps2 = osmdb.prepareStatement("SELECT osm_id,brand,disused,name,ST_Y(ST_Transform(ST_Centroid(way),4326)) as lat,ST_X(ST_Transform(ST_Centroid(way),4326)) as lon FROM planet_osm_polygon, planet_osm_nodes  WHERE osm_id=id AND tags= ANY(?) AND tags=ANY(?)");
             ps2.setString(1, kStr);
             ps2.setString(2, vStr);
             try (ResultSet rset2 = ps2.executeQuery()) {
@@ -203,6 +227,7 @@
                     counter += importExistingNode(hsqldb, osmdb, rset2, point);
                 }
             }
+*/
             System.out.println("Exists Node count = " + counter);
         }
         finally {