Newer
Older
osmCoverage / src / osm / jp / postgis / PostgisItems.java
@hayashi hayashi on 7 Jul 2018 5 KB export csv file
  1. package osm.jp.postgis;
  2.  
  3. import java.math.BigDecimal;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7.  
  8. public class PostgisItems extends ArrayList<PostgisItem> {
  9. String geom = "";
  10. String gmlid = "";
  11. String idref = "";
  12. int area = 0;
  13. int fixed = 0;
  14. int code = 0;
  15. double lat = 0.0D;
  16. double lon = 0.0D;
  17. public static void main() {
  18. PostgisItems items = new PostgisItems();
  19. items.add(new PostgisItem("gmlid", "gmlid"));
  20. items.add(new PostgisItem("idref", "idref"));
  21. items.add(new PostgisItem("area", "area"));
  22. items.add(new PostgisItem("fixed", "fixed1"));
  23. items.add(new PostgisItem("code", "code"));
  24. }
  25. public PostgisItems() {
  26. super();
  27. }
  28.  
  29. public void setResuit(ResultSet rset) throws SQLException {
  30. for (PostgisItem item : this) {
  31. switch (item.postName) {
  32. case "gmlid":
  33. gmlid = rset.getString(item.localName);
  34. break;
  35. case "idref":
  36. idref = rset.getString(item.localName);
  37. break;
  38. case "area":
  39. area = rset.getInt(item.localName);
  40. break;
  41. case "fixed":
  42. fixed = rset.getInt(item.localName);
  43. break;
  44. case "code":
  45. code = rset.getInt(item.localName);
  46. break;
  47. default:
  48. break;
  49. }
  50. }
  51. lat = rset.getDouble("lat");
  52. lon = rset.getDouble("lon");
  53. }
  54. public void setPostResuit(ResultSet rset) throws SQLException {
  55. for (PostgisItem item : this) {
  56. switch (item.postName) {
  57. case "gmlid":
  58. gmlid = rset.getString(item.postName);
  59. break;
  60. case "idref":
  61. idref = rset.getString(item.postName);
  62. break;
  63. case "area":
  64. area = rset.getInt(item.postName);
  65. break;
  66. case "fixed":
  67. fixed = rset.getInt(item.postName);
  68. break;
  69. case "code":
  70. code = rset.getInt(item.postName);
  71. break;
  72. case "geom":
  73. geom = rset.getString(item.postName);
  74. break;
  75. case "lat":
  76. lat = rset.getDouble(item.postName);
  77. break;
  78. case "lon":
  79. lon = rset.getDouble(item.postName);
  80. break;
  81. default:
  82. break;
  83. }
  84. }
  85. }
  86.  
  87. public String getSqlStr(String tableName) {
  88. StringBuilder sb = new StringBuilder();
  89. sb.append("SELECT ");
  90. for (PostgisItem item : this) {
  91. sb.append(item.localName);
  92. sb.append(",");
  93. }
  94. sb.append("lat,lon FROM "+ tableName);
  95. return sb.toString();
  96. }
  97.  
  98. public String getValue() {
  99. StringBuilder sb = new StringBuilder();
  100. boolean top = true;
  101. for (PostgisItem item : this) {
  102. if (top) {
  103. top = false;
  104. }
  105. else {
  106. sb.append(",");
  107. }
  108. switch (item.postName) {
  109. case "gmlid":
  110. sb.append(gmlid);
  111. break;
  112. case "idref":
  113. sb.append(idref);
  114. break;
  115. case "area":
  116. sb.append(area);
  117. break;
  118. case "fixed":
  119. sb.append(fixed);
  120. break;
  121. case "code":
  122. sb.append(code);
  123. break;
  124. case "geom":
  125. sb.append(geom);
  126. break;
  127. case "lat":
  128. sb.append(lat);
  129. break;
  130. case "lon":
  131. sb.append(lon);
  132. break;
  133. default:
  134. break;
  135. }
  136. }
  137. return sb.toString();
  138. }
  139. public String getPostSqlStr(String tableName) {
  140. StringBuilder sb = new StringBuilder();
  141. sb.append("SELECT ");
  142. boolean top = true;
  143. for (PostgisItem item : this) {
  144. if (top) {
  145. top = false;
  146. }
  147. else {
  148. sb.append(",");
  149. }
  150. switch (item.postName) {
  151. case "lat":
  152. sb.append("ST_Y(geom) AS lat");
  153. break;
  154. case "lon":
  155. sb.append("ST_X(geom) AS lon");
  156. break;
  157. default:
  158. sb.append(item.postName);
  159. break;
  160. }
  161. }
  162. sb.append(" FROM t_"+ tableName);
  163. sb.append(" ORDER BY area, gmlid");
  164. return sb.toString();
  165. }
  166. public String getCsvHeader() {
  167. StringBuilder sb = new StringBuilder();
  168. boolean top = true;
  169. for (PostgisItem item : this) {
  170. if (top) {
  171. top = false;
  172. }
  173. else {
  174. sb.append(",");
  175. }
  176. sb.append(item.postName);
  177. }
  178. return sb.toString();
  179. }
  180. public String getGeomStr() {
  181. return String.format(
  182. "ST_GeomFromText('POINT(%s %s)', 4612)",
  183. BigDecimal.valueOf(lon).toPlainString(),
  184. BigDecimal.valueOf(lat).toPlainString()
  185. );
  186. }
  187. }