Successfully reported this slideshow.

Google Maps 開始收費了該怎麼辦?

26

Share

1 of 146
1 of 146

Google Maps 開始收費了該怎麼辦?

26

Share

Download to read offline

Google Maps API 在 2018/7 開始收費後,Funliday 估算每個月要付很多很多很多很多錢給 Google,為了不要被 Google 的龐大費用壓垮,Funliday 開始自建 LBS 資料庫 (POIBank)。

這次就是要分享建置 POIBank 時所必備的工具,包括常用的座標系 4326 & 3857 轉換、畫邊界的 GeoJSON、標範圍的 GeoHash、轉換地址經緯度的 Pelias、OpenStreetMap 圖資及 PostgreSQL (PostGIS) 的效能調校技巧外,也會搭配真實案例讓大家了解如何利用這些開發工具建置一個 LBS 資料庫。

Google Maps API 在 2018/7 開始收費後,Funliday 估算每個月要付很多很多很多很多錢給 Google,為了不要被 Google 的龐大費用壓垮,Funliday 開始自建 LBS 資料庫 (POIBank)。

這次就是要分享建置 POIBank 時所必備的工具,包括常用的座標系 4326 & 3857 轉換、畫邊界的 GeoJSON、標範圍的 GeoHash、轉換地址經緯度的 Pelias、OpenStreetMap 圖資及 PostgreSQL (PostGIS) 的效能調校技巧外,也會搭配真實案例讓大家了解如何利用這些開發工具建置一個 LBS 資料庫。

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Google Maps 開始收費了該怎麼辦?

  1. 1. Google Maps 開始收費了該怎麼辦? Kewang
  2. 2. Google Maps 開始收費了該怎麼辦? Kewang不是講如何辦信用卡 也不是講如何 crack
  3. 3. Who I am ● 王慕羣 Kewang ● Java / JavaScript / PHP ● HBase / PostgreSQL ● Git / DevOps ● 熱愛開源 GitHubGitHub kewangkewang LinkedinLinkedin kewangtwkewangtw SlideShareSlideShare kewangkewang GmailGmail cpckewangcpckewang FacebookFacebook Kewang 的資訊進化論Kewang 的資訊進化論 modernwebmodernweb '18'18 devopsday taipeidevopsday taipei '17'17 hadoopconhadoopcon '14 '15'14 '15 mopconmopcon '14'14 jcconfjcconf '16 '17 '18'16 '17 '18
  4. 4. Funliday ● 最棒的旅遊規劃 App ● App Store 編輯精選 ● 100 萬次下載、 130 萬個行程 ● 輕鬆拖拉規劃完整路徑 ● 行程共同編輯 ● 旅遊社群
  5. 5. 遊記平台即將上線!
  6. 6. 7 回到正題
  7. 7. 8 Funliday 遇到的問題
  8. 8. 9 Funliday 遇到的問題
  9. 9. 10 Funliday 遇到的問題 ● 2018 / 7 / 16 開始, Google Maps 變更付費模型
  10. 10. 11 Funliday 遇到的問題 ● 2018 / 7 / 16 開始, Google Maps 變更付費模型 – 每個月要繳很多很多錢給 Google
  11. 11. 12 Funliday 遇到的問題 ● 2018 / 7 / 16 開始, Google Maps 變更付費模型 – 每個月要繳很多很多錢給 Google – 不出三個月就倒閉了
  12. 12. 13 如何解決錢的問題?
  13. 13. 14 如何解決錢的問題? ● 不解決
  14. 14. 15 如何解決錢的問題? ● 不解決 ● 找到錢
  15. 15. 16 如何解決錢的問題? ● 不解決 ● 找到錢 – 富爸爸
  16. 16. 17 如何解決錢的問題? ● 不解決 ● 找到錢 – 富爸爸 – 給 Google 更多錢
  17. 17. 18 如何解決錢的問題? ● 不解決 ● 找到錢 – 富爸爸 – 給 Google 更多錢 ● 自建景點資料庫
  18. 18. 19 如何解決錢的問題? ● 不解決 ● 找到錢 – 富爸爸 – 給 Google 更多錢 ● 自建景點資料庫 – POI Bank
  19. 19. 20 如何解決錢的問題? ● 不解決 ● 找到錢 – 富爸爸 – 給 Google 更多錢 ● 自建景點資料庫 – POI Bank – 為了脫離 Google
  20. 20. 21 如何解決錢的問題? ● 不解決 ● 找到錢 – 富爸爸 – 給 Google 更多錢 ● 自建景點資料庫 – POI Bank – 為了脫離 Google – 解耦
  21. 21. 22 POI Bank
  22. 22. 23 POI Bank
  23. 23. 24 POI Bank ● OpenStreetMap (OSM)
  24. 24. 25 POI Bank ● OpenStreetMap (OSM) ● GeoJSON
  25. 25. 26 POI Bank ● OpenStreetMap (OSM) ● GeoJSON ● GeoHash
  26. 26. 27 POI Bank ● OpenStreetMap (OSM) ● GeoJSON ● GeoHash ● EPSG
  27. 27. 28 POI Bank ● OpenStreetMap (OSM) ● GeoJSON ● GeoHash ● EPSG ● PostGIS
  28. 28. 29 POI Bank ● OpenStreetMap (OSM) ● GeoJSON ● GeoHash ● EPSG ● PostGIS ● Pelias
  29. 29. 30 OpenStreetMap
  30. 30. 31 OpenStreetMap 這是個好東西!
  31. 31. 32 OpenStreetMap
  32. 32. 33 OpenStreetMap ● Overpass turbo
  33. 33. 34 OpenStreetMap ● Overpass turbo ● OSRM (Open Source Routing Machine)
  34. 34. 35 Overpass turbo - OSM 的 API
  35. 35. 36 Overpass turbo - OSM 的 API ● https://overpass.nchc.org.tw/overpass-turbo
  36. 36. 37 Overpass turbo - OSM 的 API ● https://overpass.nchc.org.tw/overpass-turbo ● 找 POI ,包括下列資料
  37. 37. 38 Overpass turbo - OSM 的 API ● https://overpass.nchc.org.tw/overpass-turbo ● 找 POI ,包括下列資料 – 城市
  38. 38. 39 Overpass turbo - OSM 的 API ● https://overpass.nchc.org.tw/overpass-turbo ● 找 POI ,包括下列資料 – 城市 – 旅遊景點
  39. 39. 40 Overpass turbo - OSM 的 API ● https://overpass.nchc.org.tw/overpass-turbo ● 找 POI ,包括下列資料 – 城市 – 旅遊景點 很強大但很難用
  40. 40. 41 範例
  41. 41. 42 範例 [out:json]; node[amenity] ({{bbox}}); out;
  42. 42. 43 範例 [out:json]; node[amenity] ({{bbox}}); out;
  43. 43. 44 範例 [out:json]; node[amenity] ({{bbox}}); out;
  44. 44. 45 taginfo
  45. 45. 46 taginfo ● https://taginfo.openstreetmap.org
  46. 46. 47 taginfo ● https://taginfo.openstreetmap.org ● 常用的 tag
  47. 47. 48 taginfo ● https://taginfo.openstreetmap.org ● 常用的 tag
  48. 48. 49 OSRM
  49. 49. 50 OSRM ● https://project-osrm.org
  50. 50. 51 OSRM ● https://project-osrm.org ● 規劃路徑
  51. 51. 52 OSRM
  52. 52. 53 OSRM
  53. 53. 54 GeoJSON
  54. 54. 55 GeoJSON
  55. 55. 56 GeoJSON ● http://geojson.io
  56. 56. 57 GeoJSON ● http://geojson.io ● 適用於不規則邊框 (bounding box) 為主的功能
  57. 57. 58 GeoJSON
  58. 58. 59 GeoJSON
  59. 59. 60 GeoHash
  60. 60. 61 GeoHash
  61. 61. 62 GeoHash ● http://geohash.gofreerange.com
  62. 62. 63 GeoHash ● http://geohash.gofreerange.com ● table index
  63. 63. 64 GeoHash ● http://geohash.gofreerange.com ● table index ● 適用以特定範圍為主的功能
  64. 64. 65 GeoHash ● http://geohash.gofreerange.com ● table index ● 適用以特定範圍為主的功能 ● TICC : wsqqqjj
  65. 65. 66 GeoHash ● http://geohash.gofreerange.com ● table index ● 適用以特定範圍為主的功能 ● TICC : wsqqqjj ● 台北車站: wsqqmpv
  66. 66. 67 GeoHash ● http://geohash.gofreerange.com ● table index ● 適用以特定範圍為主的功能 ● TICC : wsqqqjj ● 台北車站: wsqqmpv GeoHash 長度 精確度 1 5000 * 5000 km 2 1250 * 625 km 3 156 * 156 km 4 39.1 * 19.5 km 5 4.89 * 4.89 km 6 1.22 * 0.61 km 7 153 * 153 m 8 38.2 * 19.1 m 9 4.77 * 4.77 m 10 1.19 * 0.596 m 11 149 * 149 mm 12 37.2 * 18.6 mm
  67. 67. 68 GeoHash
  68. 68. 69 GeoHash
  69. 69. 70 EPSG
  70. 70. 71 EPSG 以下很無聊 ...
  71. 71. 72 國際上常用的座標系統代碼
  72. 72. 73 國際上常用的座標系統代碼 ● 4326 - WGS 84
  73. 73. 74 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度
  74. 74. 75 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度 – 常看到的經緯度,如: 121.563635, 25.038638
  75. 75. 76 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度 – 常看到的經緯度,如: 121.563635, 25.038638 ● 3857 - WGS 84 / Pseudo-Mercator
  76. 76. 77 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度 – 常看到的經緯度,如: 121.563635, 25.038638 ● 3857 - WGS 84 / Pseudo-Mercator – 單位:公尺
  77. 77. 78 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度 – 常看到的經緯度,如: 121.563635, 25.038638 ● 3857 - WGS 84 / Pseudo-Mercator – 單位:公尺 – 投影座標系
  78. 78. 79 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度 – 常看到的經緯度,如: 121.563635, 25.038638 ● 3857 - WGS 84 / Pseudo-Mercator – 單位:公尺 – 投影座標系 – Google Maps 內部在用
  79. 79. 80 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度 – 常看到的經緯度,如: 121.563635, 25.038638 ● 3857 - WGS 84 / Pseudo-Mercator – 單位:公尺 – 投影座標系 – Google Maps 內部在用 – 不常看到的數字,如: 13532401.95, 2880491.19
  80. 80. 81 國際上常用的座標系統代碼 ● 4326 - WGS 84 – 單位:度 – 常看到的經緯度,如: 121.563635, 25.038638 ● 3857 - WGS 84 / Pseudo-Mercator – 單位:公尺 – 投影座標系 – Google Maps 內部在用 – 不常看到的數字,如: 13532401.95, 2880491.19 不要懂,頭很痛
  81. 81. 82 台灣常用的座標系統代碼
  82. 82. 83 台灣常用的座標系統代碼 ● 3826 - TWD97 / TM2 zone 121
  83. 83. 84 台灣常用的座標系統代碼 ● 3826 - TWD97 / TM2 zone 121 – 台灣本島專用
  84. 84. 85 台灣常用的座標系統代碼 ● 3826 - TWD97 / TM2 zone 121 – 台灣本島專用 ● 3825 - TWD97 / TM2 zone 119
  85. 85. 86 台灣常用的座標系統代碼 ● 3826 - TWD97 / TM2 zone 121 – 台灣本島專用 ● 3825 - TWD97 / TM2 zone 119 – 澎湖地區專用
  86. 86. 87 台灣常用的座標系統代碼 ● 3826 - TWD97 / TM2 zone 121 – 台灣本島專用 ● 3825 - TWD97 / TM2 zone 119 – 澎湖地區專用 TL;DR 因為精確度不夠 所以制定新標準
  87. 87. 88
  88. 88. 89 TWD97 與 WGS84 轉換
  89. 89. 90 TWD97 與 WGS84 轉換 ● 差異不大,約為幾公分至數十公分
  90. 90. 91 TWD97 與 WGS84 轉換 ● 差異不大,約為幾公分至數十公分 ● 可視為一致
  91. 91. 92 PostGIS
  92. 92. 93 PostGIS 很重要!
  93. 93. 94 PostGIS
  94. 94. 95 PostGIS ● 可以在 PostgreSQL 上面操作地理資料
  95. 95. 96 PostGIS ● 可以在 PostgreSQL 上面操作地理資料 ● 包含下列資料
  96. 96. 97 PostGIS ● 可以在 PostgreSQL 上面操作地理資料 ● 包含下列資料 – GeoJSON
  97. 97. 98 PostGIS ● 可以在 PostgreSQL 上面操作地理資料 ● 包含下列資料 – GeoJSON – GeoHash
  98. 98. 99 PostGIS ● 可以在 PostgreSQL 上面操作地理資料 ● 包含下列資料 – GeoJSON – GeoHash – EPSG 座標轉換
  99. 99. 100 PostGIS - 今天要講的
  100. 100. 101 PostGIS - 今天要講的 ● Geometry vs. Geography
  101. 101. 102 PostGIS - 今天要講的 ● Geometry vs. Geography ● GiST index type
  102. 102. 103 PostGIS - 今天要講的 ● Geometry vs. Geography ● GiST index type ● Cluster index
  103. 103. 104 PostGIS - 今天要講的 ● Geometry vs. Geography ● GiST index type ● Cluster index ● GeoHash
  104. 104. 105 PostGIS - 今天要講的 ● Geometry vs. Geography ● GiST index type ● Cluster index ● GeoHash ● GeoJSON
  105. 105. 106 Geometry vs. Geography
  106. 106. 107 Geometry vs. Geography
  107. 107. 108 Geometry vs. Geography dist_degree (deg) dist_spheroid (m) dist_sphere (m) 121.898285970107 9124665.27317673 9103087.98300975
  108. 108. 109 GiST index type
  109. 109. 110 GiST index type ● Generalized Search Tree
  110. 110. 111 GiST index type ● Generalized Search Tree ● 適用在空間結構
  111. 111. 112 GiST index type ● Generalized Search Tree ● 適用在空間結構
  112. 112. 113 Cluster index
  113. 113. 114 Cluster index ● ctid : PostgreSQL 紀錄存的物理位置
  114. 114. 115 Cluster index ● ctid : PostgreSQL 紀錄存的物理位置
  115. 115. 116 Cluster index ● ctid : PostgreSQL 紀錄存的物理位置
  116. 116. 117 GeoHash
  117. 117. 118 GeoHash ● 特定範圍的搜尋
  118. 118. 119 GeoHash ● 特定範圍的搜尋
  119. 119. 120 GeoHash ● 特定範圍的搜尋
  120. 120. 121 GeoHash ● 特定範圍的搜尋 搜尋大台北的所有景點
  121. 121. 122 GeoJSON
  122. 122. 123 GeoJSON ● 精準範圍的搜尋
  123. 123. 124 GeoJSON ● 精準範圍的搜尋
  124. 124. 125 Pelias
  125. 125. 126 Pelias 以下是失敗案例 ...
  126. 126. 127 Pelias - Geocoder
  127. 127. 128 Pelias - Geocoder
  128. 128. 129 Pelias - Data Importers
  129. 129. 130 Pelias - Data Importers ● OpenStreetMap :全球無數個 POI , 46 GB
  130. 130. 131 Pelias - Data Importers ● OpenStreetMap :全球無數個 POI , 46 GB ● OpenAddresses :全球 5.4 億個地址, 11 GB
  131. 131. 132 Pelias - Data Importers ● OpenStreetMap :全球無數個 POI , 46 GB ● OpenAddresses :全球 5.4 億個地址, 11 GB ● Who's on First : 500 萬個 POI , 28 GB
  132. 132. 133 Pelias - Data Importers ● OpenStreetMap :全球無數個 POI , 46 GB ● OpenAddresses :全球 5.4 億個地址, 11 GB ● Who's on First : 500 萬個 POI , 28 GB ● Geonames : 1200 萬個地名, 1.5 GB
  133. 133. 134 Pelias - Data Importers ● OpenStreetMap :全球無數個 POI , 46 GB ● OpenAddresses :全球 5.4 億個地址, 11 GB ● Who's on First : 500 萬個 POI , 28 GB ● Geonames : 1200 萬個地名, 1.5 GB ● Polylines :匯入 OSM 的道路資料
  134. 134. 135 Manual install
  135. 135. 136 Manual install ● 硬碟空間:至少 100 GB
  136. 136. 137 Manual install ● 硬碟空間:至少 100 GB ● 記憶體空間:至少 16 GB
  137. 137. 138 Manual install ● 硬碟空間:至少 100 GB ● 記憶體空間:至少 16 GB ● CPU :多多益善
  138. 138. 139 Manual install ● 硬碟空間:至少 100 GB ● 記憶體空間:至少 16 GB ● CPU :多多益善 ● Elasticsearch :官方文件至少版本 5.6 以上
  139. 139. 140 Manual install ● 硬碟空間:至少 100 GB ● 記憶體空間:至少 16 GB ● CPU :多多益善 ● Elasticsearch :官方文件至少版本 5.6 以上 別浪費時間手動安裝
  140. 140. 141 Better choice
  141. 141. 142 Better choice ● Docker
  142. 142. 143 Better choice ● Docker – 沒試過,成本太高
  143. 143. 144 Reference ● 大地座標系統與二度分帶座標 ● 坐標系統及WebGIS常用的坐標轉換 ● Introduction to PostGIS - Geography
  144. 144. 145
  145. 145. 146

×