diff --git a/src/osm/jp/coverage/fuel/ToGeoJSON.java b/src/osm/jp/coverage/fuel/ToGeoJSON.java new file mode 100644 index 0000000..1607280 --- /dev/null +++ b/src/osm/jp/coverage/fuel/ToGeoJSON.java @@ -0,0 +1,61 @@ +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(); + } + } +}