package osm.jp.coverage.fuel; 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データをGeoJSONファイルに出力する。 * 出力ファイル名: "fuel.json" * テーブル名: t_fuel * fixed OSMの周辺に存在するかどうか、存在しない場合は0,存在する場合は1。ブランド有りは50。 * geom PostGIS形式の位置情報(4612:) * SELECT row_to_json(feature) FROM ( select 'Feature' As type, ST_AsGeoJSON(ST_Transform(t_fuel.geom,4326))::json As geometry, row_to_json(( SELECT p FROM (SELECT t_fuel.idref, t_fuel.fixed) AS p)) AS properties From t_fuel) As feature * * @author yuu * */ public class ToGeoJSON { public static final String JSON_FILE_NAME = "fuel.json"; public static void main (String[] argv) throws Exception { outputDb(DatabaseTool.openDb("postgis")); } public static void outputDb(Connection con) throws Exception { File csvFile = new File(JSON_FILE_NAME); try (BufferedWriter ow = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"))) { String line = "{" + "\"type\": \"FeatureCollection\"," + "\"features\": ["; System.out.println(line); ow.write(line); ow.newLine(); PreparedStatement ps8 = con.prepareStatement("SELECT row_to_json(feature) FROM (" + "select 'Feature' As type, ST_AsGeoJSON(ST_Transform(t_fuel.geom,4326))::json As geometry, row_to_json((" + "SELECT p FROM (SELECT t_fuel.idref, t_fuel.fixed) AS p)) AS properties From t_fuel) As feature"); try (ResultSet rset8 = ps8.executeQuery()) { while (rset8.next()) { line = rset8.getString(1); System.out.println(line); ow.write(line); ow.newLine(); } } line = "]}"; System.out.println(line); ow.write(line); ow.newLine(); ow.flush(); } } }