diff --git a/src/ImportGML_FUEL.sh b/src/ImportGML_FUEL.sh index 88ce067..b51e471 100755 --- a/src/ImportGML_FUEL.sh +++ b/src/ImportGML_FUEL.sh @@ -1,4 +1,5 @@ rm -r database +mkdir database java -cp .:osmCoverage.jar:hayashi_0225.jar:hsqldb_2.2.9.jar:postgresql-9.4.1212.jar osm.jp.coverage.fuel.DbFuel java -cp .:osmCoverage.jar:hayashi_0225.jar:hsqldb_2.2.9.jar:postgresql-9.4.1212.jar osm.jp.coverage.fuel.DbExist java -cp .:osmCoverage.jar:hayashi_0225.jar:hsqldb_2.2.9.jar:postgresql-9.4.1212.jar osm.jp.coverage.fuel.Fuel diff --git a/src/ImportGML_FUEL_update.sh b/src/ImportGML_FUEL_update.sh new file mode 100644 index 0000000..d730440 --- /dev/null +++ b/src/ImportGML_FUEL_update.sh @@ -0,0 +1,6 @@ +rm -r database +mkdir database +java -cp .:osmCoverage.jar:hayashi_0225.jar:hsqldb_2.2.9.jar:postgresql-9.4.1212.jar osm.jp.coverage.fuel.DbFuel -update +java -cp .:osmCoverage.jar:hayashi_0225.jar:hsqldb_2.2.9.jar:postgresql-9.4.1212.jar osm.jp.coverage.fuel.DbExist +java -cp .:osmCoverage.jar:hayashi_0225.jar:hsqldb_2.2.9.jar:postgresql-9.4.1212.jar osm.jp.coverage.fuel.Fuel +java -cp .:osmCoverage.jar:hayashi_0225.jar:hsqldb_2.2.9.jar:postgresql-9.4.1212.jar osm.jp.coverage.fuel.ToPostgis diff --git a/src/db.fuel.class.violet.html b/src/db.fuel.class.violet.html index 5390200..c472b3d 100644 --- a/src/db.fuel.class.violet.html +++ b/src/db.fuel.class.violet.html @@ -134,7 +134,7 @@ - + 1 @@ -186,10 +186,12 @@ table.FUEL - +idref: VARCHAR(12) NOT NULL + gid: INT ++ idref: VARCHAR(12) NOT NULL lat: DOUBLE lon: DOUBLE fixed: INT + fixed1: INT area: INT up: INT @@ -198,7 +200,7 @@ - + 1 @@ -237,7 +239,7 @@ + gid: SERIAL PRIMARY KEY - idstr: text + idref: text fixed: integer area: integer geom: GEOMETRY(POINT, 4612) @@ -367,632 +369,627 @@

embedded diagram image +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 +T1w8qvE4tD7/XM4dFbkDugV0C7fwFWnPnj21tbWZTCYGYTfyepXednh4uLe3t7m5Oeetp4Vv9S/X +sFuwYOSP8p/2im4ZZ3p6ej796U/Hf0ovvPDC+Pw85cInDNzOy6jf9MuQ34rpvX/ccIP7WcxA9gan +CIOcUzjqHv1chM2cr9SNvITlmh9/J/v4xr063fgT99raH/XtfeNW7JtuwShBt3Cjr0iTJk06cuRI +zNzg5yalWz59+vTixYu3b99ezKtfuk55efmcOXO2bNky2q56LdUt419fX9+rr776T//0TzH/2lXv +v//+XdEt13SNFJPJpFtAt3AHXpFu1mvU9W05+0q4MearrKxML2alW3TLXe3dd9994YUXJk+ePG3a +tPHwFrLbeUTFZDLpFtAt3ORXpJw3XyVfN27cmL5la/bs2b29vR9f/ciQhoaGqIva2trkii6xZPHi +xbGkqqpq3bp1Y3ZL4U8KST7efc2aNXEvukW33EsiWpIP+YyGmTdv3quvvhqJfj93y8g9ObH/rfRE +iGQaOLb9lb9eYqRr0i26Bd2Cbsm/JJ2PeNi8efP69etbW1uTJW1tbcm79g8fPlxZWXnlypVlVw0O +DsaYrL29/QaPtyQzly9fnjp16rZt23SLbrn3fPTRR2+//fbSpUtnz5798dVPJ+vp6fnnf/7n8dkt +61/+YflDEyrKy974+QtFjsmKvBRj+m3byu81Nsyt/bOqukc/l3P+enybfrbvnT0bx2TSLaBbGNfd +MjAwUFdXF6Or9KSXTCaTPQrZt29fzkVyb0q3hEOHDlVVVcUOuKKUbrm3ffjhh/X19Q8++GD8h/ar +X/1qXHXL1jdemvpIbfIJttv/+5qcT4K6voMqedsm+iS9XEl6BZLKioemT5s892tfXPjEV3dvaf/g +yOanv/GV7KuI6BaTbtEt6BZ0y7/Onzt3bvpVaZksWrQo54bRLRcvXrzp3RJWrVrV3Nw8YcIEr6W6 +5Z43ODj4m9/8pqenJ+Z7e3tfeumld955p8DFo29Pt9TPeiw9AHL5/V3f+k9fu5FDLtmfxptchXBZ +4zcjivLu0sCx7acP/V35QxP2bO1IPwV4V/e6KZOq02uT6xaTbtEt6BZ0y7/Oz5s3b8+ePZ2dncuX +L0+WNDU1dXd3Dw8P9/f3t7S0xLhq2bJlS5YsuXTpUtRLZMZN7JbY+JQpUxxv0S33mw8//PDNN998 +6qmnqqqq3n777eS/hTvSLZlPlmZfKjG9XGPhZhizW4p8L1nPprXNP3gq/bbq4U8l14fZt+NV3WLS +LboF3YJu+f/n29vb01yZNWtWchb+wMBAY2NjJpOprq7u6upK/j9xxEwsqamp2bRp0w2el5/z04MH +Dzq/RbfctyJX4r+vmPnJT34ybdq0+O+xp6cnWXJ7uqWk5E+yv02vRl/8e8NGuzxl9pL0XnLWmfX4 +F47vezOnW5zfYtItugXdwv3eLaBbxrN333335z//+bx5806cOPHx1QtcXt+nKl/TWH/y5z6bHm+5 +cPzvs4+33Mj7xHKWpxeNyTnY8u2n/iJ7s7rFpFuMEtAt6BbQLXeZl19+ubq6etq0aS+99NKt65ZV +f/XsO5v/72R+y4bWhgWzi/8UsgM7/2s0T5o6Off72tofxZK+vW8Mne6pKC/LWWfw5G8n/bvPnDr4 +y5jf0PF8rFD9mcoJD35y/287C3RLlNWC//glw2KTbjFKQLegW0C3jC/Hjh1LToAZHBx85pln3njj +jeRozM3qlg+ObJ7zlbrzR7edfW/Lo5+vSU8sGfNYR2RJ1cOfaln6TGPD3JE/Pdr7i9bnn4sttK38 +XtNz35j/9Rkjt5l+bljpAw+cOfx25E3Znz4YG5z5xUf2/vrnyY+iZK6c+Yf0Jku+88Sm1140LDbp +FqMEdAu6BXTL+PWb3/zmJz/5yeTJk5999tn49sqVKx999NENdkvyEV5RINWfqdz4Nz++phtu6Hi+ +5rMPz/7StPUv/zD9BLCYhj/4XQRG9EayJ7Haqr96tkALvflqy6zHv1BS8ifJ28ZOH/q7vr1vJD9q +WDC746Wm2GBEzrLGb17rHppMusUoAd2Cbil0jzGzYMGCkT/K/4Z4dAvXKPnwsd7e3oceeuipp556 +7bXX3n///evulmud2n/2g+8+Uz/jzz+/9sXGgWPbIyq2/eKvGxvmVpSXLXziq9mfTpac1rL8+wvS +DklPdCn+cNDcr30xbvXYF/797i3tBsQm3aJb0C3olpt5j+Xl5XPmzNmyZctoO+PVUrd4JG+KwcHB +X/3qV0uXLv3lL38Z3/7hD3949913b3W3vPePGyIn8v4oMmbkwqHTPQayJt0yHl/N4VbwLz23oVuG +h4dv1j1mMpm+vr7Kysr+/n7dolt0y23T29v7zDPP+Awuk0m3ON6C4y3c3d1y+vTp+vr6iIpJkybt +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 +AABJRU5ErkJg" /> \ No newline at end of file diff --git a/src/fuel.activity.violet.html b/src/fuel.activity.violet.html index 5b1501d..1fcc293 100644 --- a/src/fuel.activity.violet.html +++ b/src/fuel.activity.violet.html @@ -20,7 +20,7 @@ - + 1 @@ -65,7 +65,7 @@ - + 1 @@ -74,7 +74,7 @@ - + 1 @@ -102,7 +102,7 @@ - + 1 @@ -171,7 +171,7 @@ - + 1 @@ -224,8 +224,8 @@ Fuel.main() -FUEL_EXISTのfixedを集計して -FUELのscoreをUPDATE +FUEL_EXISTのscoreを集計して +FUELのfixedをUPDATE @@ -237,7 +237,7 @@ - update (score) + update (fixed) @@ -320,30 +320,94 @@ + + + + + 1 + + 255 + 255 + 255 + 255 + + + 0 + 0 + 0 + 255 + + + + DbFuel.main(-update) +PostGIS.t_FUELを読み取って +HSQLDB.FUELテーブルに格納する + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + 1 + + 255 + 255 + 255 + 255 + + + 0 + 0 + 0 + 255 + + + + Create & insert + + - - + + - - - - + + + + 1 - + - + - - - - + + + + 1 @@ -352,13 +416,13 @@ - + - - - - + + + + 1 @@ -367,37 +431,28 @@ - + - - - - + + + + 1 - + - - - - - - - - 1 - - + - - - - + + + + 1 @@ -406,37 +461,28 @@ - + - - - - + + + + 1 - + - - - - - - - - 1 - - + - - - - + + + + 1 @@ -445,13 +491,13 @@ - + - - - - + + + + 1 @@ -460,31 +506,31 @@ - + - - - - + + + + 1 - + - - - - + + + + 1 - + - - - - + + + + 1 @@ -493,13 +539,13 @@ - + - - - - + + + + 1 @@ -508,31 +554,22 @@ - + - - - - + + + + 1 - - - - - - - - 1 - - + - - - - + + + + 1 @@ -541,22 +578,22 @@ - + - - - - + + + + 1 - + - - - - + + + + 1 @@ -565,13 +602,13 @@ - + - - - - + + + + 1 @@ -580,22 +617,13 @@ - - - - - - - - 1 - - + - - - - + + + + 1 @@ -604,705 +632,1061 @@ + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + ]]>

- embedded diagram image + embedded diagram image \ No newline at end of file diff --git a/src/osm/jp/coverage/fuel/DbFuel.java b/src/osm/jp/coverage/fuel/DbFuel.java index 10b9325..c6cd703 100644 --- a/src/osm/jp/coverage/fuel/DbFuel.java +++ b/src/osm/jp/coverage/fuel/DbFuel.java @@ -1,6 +1,7 @@ package osm.jp.coverage.fuel; import java.io.*; +import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -17,7 +18,8 @@ import osm.jp.api.Db; public class DbFuel { - public static final String TABLE_NAME = "FUEL"; + public static final String TABLE_NAME = "FUEL"; + public static boolean UPDATE = false; /** メイン * @param args @@ -29,12 +31,18 @@ * @throws org.xml.sax.SAXException */ public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException, IOException, SQLException, ParserConfigurationException, SAXException { + if ((args.length > 1) && args[0].equals("-update")) { + UPDATE = true; + } + // HSQLディレクトリがなければエラー File dbdir = new File("database"); if (!dbdir.isDirectory()) { throw new FileNotFoundException("Directory 'database' is not found."); } + Connection con = null; + Connection conPost = null; try { // DB.tableを作成 con = DatabaseTool.openDb("database"); @@ -45,12 +53,18 @@ } // - File gmlDir = new File("GML_FUEL"); - for (File gmlFile : gmlDir.listFiles()) { - if (checkGMLfile(gmlFile)) { - int index = "P07-15_".length(); - int areacode = Integer.parseInt(gmlFile.getName().substring(index, index+2)); - inputFile(con, gmlFile, areacode); + if (UPDATE) { + conPost = DatabaseTool.openDb("postgis"); + transport(con, conPost); + } + else { + File gmlDir = new File("GML_FUEL"); + for (File gmlFile : gmlDir.listFiles()) { + if (checkGMLfile(gmlFile)) { + int index = "P07-15_".length(); + int areacode = Integer.parseInt(gmlFile.getName().substring(index, index+2)); + inputFile(con, gmlFile, areacode); + } } } @@ -60,6 +74,49 @@ if (con != null) { DatabaseTool.closeDb(con); } + if (conPost != null) { + DatabaseTool.closeDb(conPost); + } + } + } + + /** + * HSQLDB: "SELECT idref,area,fixed,lat,lon FROM FUEL" + * POSTGIS "insert into t_FUEL(idref,fixed,area,geom) VALUES('n000001',0,0, ST_GeomFromText('POINT(136.9695284611471 35.10300377075564)', 4612));" + * + * @param conHsql + * @param conPost + * @throws java.io.FileNotFoundException + * @throws java.lang.ClassNotFoundException + * @throws java.sql.SQLException + * @throws java.io.IOException + * @throws javax.xml.parsers.ParserConfigurationException + * @throws org.xml.sax.SAXException + */ + public static void transport (Connection conHsql, Connection conPost) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException, ParserConfigurationException, SAXException { + try (PreparedStatement ps1 = conPost.prepareStatement("SELECT gid,idref,area,fixed,ST_Y(geom) AS lat,ST_X(geom) AS lon FROM t_FUEL")) { + try (ResultSet rset1 = ps1.executeQuery()) { + while (rset1.next()) { + long gid = rset1.getLong("gid"); + String idref = rset1.getString("idref"); + int area = rset1.getInt("area"); + int fixed = rset1.getInt("fixed"); + double lat = rset1.getDouble("lat"); + double lon = rset1.getDouble("lon"); + + String sqlStr = "INSERT INTO FUEL (gid,lat,lon,fixed,idref,area,up,fixed1) VALUES(?,?,?,?,?,?,2,0)"; + try (PreparedStatement ps = conPost.prepareStatement(sqlStr)) { + ps.setLong(1, gid); + ps.setString(2, BigDecimal.valueOf(lat).toPlainString()); + ps.setString(3, BigDecimal.valueOf(lon).toPlainString()); + ps.setInt(4, fixed); + ps.setString(5, idref); + ps.setInt(6, area); + System.out.println(sqlStr); + ps.executeUpdate(); + } + } + } } } @@ -95,7 +152,6 @@ System.out.println("("+ areacode +") データ数["+ iCounter +"]"); } } - } /** @@ -172,7 +228,7 @@ } } - try (PreparedStatement ps = con.prepareStatement("INSERT INTO "+ TABLE_NAME +"(lat,lon,fixed,idref,area,up) VALUES(?,?,?,?,?,2)")) { + try (PreparedStatement ps = con.prepareStatement("INSERT INTO "+ TABLE_NAME +"(gid,lat,lon,fixed,idref,area,up) VALUES(0,?,?,?,?,?,2)")) { double lat = Double.parseDouble(latStr); double lon = Double.parseDouble(lonStr); ps.setDouble(1, lat); @@ -212,7 +268,7 @@ // 'table.FUEL'を新規に作る //Db.drop(con, TABLE_NAME); - createSt = "CREATE TABLE "+ TABLE_NAME +" (idref VARCHAR(12) NOT NULL, lat DOUBLE, lon DOUBLE, fixed INT, area INT, up INT)"; + createSt = "CREATE TABLE "+ TABLE_NAME +" (gid INT, idref VARCHAR(12) NOT NULL, lat DOUBLE, lon DOUBLE, fixed INT, area INT, up INT, fixed1 INT)"; Db.updateSQL(con, createSt); /* diff --git a/src/osm/jp/coverage/fuel/Fuel.java b/src/osm/jp/coverage/fuel/Fuel.java index 2c8bbf4..9f4bdab 100644 --- a/src/osm/jp/coverage/fuel/Fuel.java +++ b/src/osm/jp/coverage/fuel/Fuel.java @@ -22,7 +22,7 @@ public static final boolean DB_INIT = false; // 近くのノードを探す範囲(KJS2を中心としたNEER×2(m)四方の領域 - static final int NEER = 150; // 150m(0.15km) + static final int NEER = 100; // 100m public static SimpleDateFormat timeStampFmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); @@ -72,35 +72,56 @@ * @throws TransformerException */ public Fuel(Connection con) throws SQLException, FileNotFoundException, ClassNotFoundException, IOException, ParserConfigurationException, SAXException, TransformerException { - try ( PreparedStatement ps1 = con.prepareStatement("SELECT idref,lat,lon,fixed,area FROM "+ DbFuel.TABLE_NAME); - PreparedStatement ps2 = con.prepareStatement("SELECT SUM(score) FROM "+ DbExist.TABLE_NAME +" where (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?)"); + try ( PreparedStatement ps2 = con.prepareStatement("SELECT idref,lat,lon,fixed FROM "+ DbFuel.TABLE_NAME +" WHERE (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?) and (fixed1=0)"); + PreparedStatement ps1 = con.prepareStatement("SELECT idref,lat,lon,score FROM "+ DbExist.TABLE_NAME); PreparedStatement ps3 = con.prepareStatement("UPDATE "+ DbFuel.TABLE_NAME +" SET fixed=? WHERE idref=?");) { try (ResultSet rset1 = ps1.executeQuery()) { while (rset1.next()) { - String idref = rset1.getString("idref"); - Double lat = rset1.getDouble("lat"); - Double lon = rset1.getDouble("lon"); - int fixed = rset1.getInt("fixed"); + //String osmid = rset1.getString("idref"); + double lat = rset1.getDouble("lat"); + double lon = rset1.getDouble("lon"); + int score = rset1.getInt("score"); + String idref = null; + int fixed = 0; - // 指定の緯度経度を中心とする半径150x2m四方の矩形領域 - RectArea rect = new RectArea(lat, lon, NEER); // 300m 四方 + // 指定の緯度経度を中心とする半径100x2m四方の矩形領域 + RectArea rect = new RectArea(lat, lon, NEER); // 200m 四方 ps2.setDouble(1, rect.minlat); ps2.setDouble(2, rect.maxlat); ps2.setDouble(3, rect.minlon); ps2.setDouble(4, rect.maxlon); try (ResultSet rset2 = ps2.executeQuery()) { - if (rset2.next()) { - int score = rset2.getInt(1); - if (fixed != score) { - ps3.setInt(1, score); - ps3.setString(2, idref); - ps3.executeUpdate(); + double distance = NEER * 2; + while (rset2.next()) { + fixed = rset2.getInt("fixed"); + if (fixed == 0) { + double lat2 = rset2.getDouble("lat"); + double lon2 = rset2.getDouble("lon"); + double dd = distance(lat,lat2,lon,lon2); + if (dd < distance) { + distance = dd; + idref = rset2.getString("idref"); + } } } } + if (idref != null) { + System.out.println("UPDATE "+ DbFuel.TABLE_NAME +" SET fixed="+ score +" WHERE idref="+ idref); + ps3.setInt(1, score); + ps3.setString(2, idref); + ps3.executeUpdate(); + } } } } } + + public static final double ONE_KM_LAT = 0.009013372D; + public static final double ONE_KM_LON = 0.010966404D; + static double distance(double lat1, double lon1, double lat2, double lon2) { + double dlat = Math.abs(lat1 - lat2) / ONE_KM_LAT / 1000D; + double dlon = Math.abs(lon1 - lon2) / ONE_KM_LON / 1000D; + return Math.sqrt(dlat*dlat + dlon*dlon); + } } \ No newline at end of file diff --git a/src/t_FUEL.sql b/src/t_FUEL.sql index a6d80fc..3e407c0 100644 --- a/src/t_FUEL.sql +++ b/src/t_FUEL.sql @@ -33,14 +33,20 @@ ---- CREATE TABLE FUEL ( + gid INT, idref VARCHAR(12) NOT NULL, lat DOUBLE, lon DOUBLE, fixed INT, area INT, - up INT + up INT, + fixed1 INT ) -INSERT INTO FUEL (lat,lon,fixed,idref,area,up) VALUES(?,?,?,?,?,2) +// new data +INSERT INTO FUEL (gid,lat,lon,fixed,idref,area,up,fixed1) VALUES(0,?,?,0,?,?,2,0) + +// read PostGIS +INSERT INTO FUEL (gid,lat,lon,fixed,idref,area,up,fixed1) VALUES(?,?,?,?,?,?,0,0) ---- \ No newline at end of file