Newer
Older
osmCoverage / src / osm / jp / coverage / busstop / ToCartoCSV.java
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("'", "''"));
    }
}