package osm.jp.coverage.busstop; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import jp.co.areaweb.tools.database.DatabaseTool; /** * PostGISデータをCarto用のCSVファイルに出力する。 * 出力ファイル名: "carto.csv" * テーブル名: t_busstop * インデックス: ix_busstop_geom * gid PostGISの識別ID * name バス停名称 * fixed OSMのバス停が周辺に存在するかどうか、存在しない場合は0,存在する場合はその数。 * geom PostGIS形式の位置情報(4612:) * @author yuu * */ public class ToCartoCSV { public static final String CSV_FILE_NAME = "busstop.carto.csv"; @SuppressWarnings("CallToPrintStackTrace") public static void main (String[] argv) { try { outputDb(); } catch (Exception e) { e.printStackTrace(); } } public static void outputDb() throws Exception { File csvFile = new File(CSV_FILE_NAME); try (BufferedWriter ow = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"))) { Connection con = DatabaseTool.openDb(CoverageBusstop.DB_PORP_GISDB); // CSV header System.out.println("gid,geom,score"); ow.write("gid,geom,score"); ow.newLine(); PreparedStatement ps8 = con.prepareStatement("SELECT gid,geom,fixed FROM t_busstop"); try (ResultSet rset8 = ps8.executeQuery()) { while (rset8.next()) { String gid = rset8.getString("gid"); String geom = rset8.getString("geom"); int score = rset8.getInt("fixed"); String osm_node; osm_node = ""+ gid +","+ geom +","+ score +""; System.out.println(osm_node); ow.write(osm_node); ow.newLine(); } } ow.flush(); } } /** * postgresql 用に(')をエスケープする * * @param name * @return */ public static String escapeStr(String name) { return ((name == null) ? "" : name.replaceAll("'", "''")); } }