- package osm.jp.postgis;
-
- import osm.jp.coverage.busstop.*;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.math.BigDecimal;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import javax.xml.parsers.ParserConfigurationException;
- import jp.co.areaweb.tools.database.DatabaseTool;
- import org.xml.sax.SAXException;
- import osm.jp.api.HttpPOST;
-
- /**
- * 1000mメッシュをPOSTGIS.t_testへ反映させる
- * ノード: 綾西 (368434484) 35.4342443, 139.4092180
- * から
- * ノード: 庚申供養 (1679559681) 35.4342940, 139.4207050
- * ノード: 内藤橋 (1742708189) : 35.4432806, 139.4104114
- * までが 1,000m となるはず
- *
- * テーブル名: t_test
- * インデックス: ix_test_geom
- * gid PostGISの識別ID
- * fixed
- * geom PostGIS形式の位置情報(4612:)
- * @author yuu
- *
- */
- public class ToPostgis {
- public static void main(String[] argv) throws Exception {
- Connection conHsql = null;
- Connection conPost = null;
- try {
- // DB.tableを作成
- conHsql = DatabaseTool.openDb("database");
- conPost = DatabaseTool.openDb("postgis");
-
- transportNew(conHsql, conPost);
-
- }
- finally {
- if (conHsql != null) {
- DatabaseTool.closeDb(conHsql);
- }
- if (conPost != null) {
- DatabaseTool.closeDb(conPost);
- }
- }
- }
-
- /**
- * POSTGIS "insert into t_test(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 transportNew (Connection conHsql, Connection conPost) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException, ParserConfigurationException, SAXException {
- HttpPOST.sql(conPost, "DROP TABLE IF EXISTS t_test CASCADE;");
- HttpPOST.sql(conPost, "CREATE TABLE t_test (gid SERIAL PRIMARY KEY,fixed integer,area integer,geom GEOMETRY(POINT, 4612));");
- HttpPOST.sql(conPost, "CREATE INDEX ix_test_geom ON t_test USING GiST (geom);");
-
- toInsert(conHsql, conPost);
- }
-
- public static void toInsert (Connection conHsql, Connection conPost) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException, ParserConfigurationException, SAXException {
- String sql = "SELECT gmlid,name,lat,lon,fixed1,area FROM "+ DbBusstop.TABLE_NAME;
- try (PreparedStatement ps1 = conHsql.prepareStatement(sql)) {
- try (ResultSet rset1 = ps1.executeQuery()) {
- while (rset1.next()) {
- String gmlid = rset1.getString("gmlid");
- int area = rset1.getInt("area");
- int fixed1 = rset1.getInt("fixed1");
- double lat = rset1.getDouble("lat");
- double lon = rset1.getDouble("lon");
- String name = rset1.getString("name");
-
- int fixed = 0;
- if (fixed1 >= 100) {
- fixed = 3;
- }
- else if (fixed1 >= 50) {
- fixed = 2;
- }
- else if (fixed1 > 0) {
- fixed = 1;
- }
- String geom = "ST_GeomFromText('POINT("+ BigDecimal.valueOf(lon).toPlainString() +" "+ BigDecimal.valueOf(lat).toPlainString() +")', 4612)";
- String sqlStr = "INSERT INTO t_busstop (gmlid,name,fixed,area,geom) VALUES ('"+ gmlid +"','"+ name +"',"+ fixed +","+ area +","+ geom +")";
- System.out.println(sqlStr);
- sqlStr = "INSERT INTO t_busstop (gmlid,name,fixed,area,geom) VALUES (?,?,?,?,"+ geom +")";
- try (PreparedStatement ps = conPost.prepareStatement(sqlStr)) {
- ps.setString(1, gmlid);
- ps.setString(2, name);
- ps.setInt(3, fixed);
- ps.setInt(4, area);
- ps.executeUpdate();
- }
- }
- }
- }
- }
- }