OpenMactiles 및 go-Staticmaps
15049 단어 GoOpenMapTilesgo-staticmaps
이번에는
go-staticmaps
라는 프로그램 라이브러리를 소개하고 싶습니다.https://github.com/flopp/go-staticmaps
go-staticmaps
이 프로그램 라이브러리는 지도의 판식 데이터 (지도 데이터를 사각으로 자른 모양) 를 표시하거나 그리거나 최종적으로 그림으로 출력할 수 있습니다.
이것은 자신이 창작한 지도 이미지를 쉽게 만들고 싶을 때 가장 좋은 도서관이다.
얼른 써봐.
가고 싶지만 그 전에 이번에 사용할 타일 데이터를 준비하겠습니다.
이번에 사용된 지도 타일 데이터OpenMapTiles.
사실 자신이 타일 데이터를 준비하지 않아도 go-staticmaps는 OpenStreetMap의 타일 데이터를 기본적으로 사용해서 지도를 표시할 수 있다.
하지만 OpenMapTiles는 기본적으로 여러 가지 스타일이 있는데 취향에 따라 바꿀 수 있기 때문에 이번에는 타일 서버를 사용해 보기로 했다.
배열 데이터 준비
준비는 간단하다.공식적으로 Docker를 사용하여 타일 서버를 만드는 프로그램을 제공하기 때문에 프로그램대로 진행됩니다.
https://openmaptiles.com/server/#install
시간이 좀 걸리겠지만 딱히 막히는 곳이 없다고 생각해서 자세한 설명은 필요 없지만 일본 전체의 타일 데이터를 다운받아 localhost로 연결하면 이런 지도가 나올 것 같아요.
go-staticmaps 사용
그럼 goo-taticmaps를 사용하세요.
우선 원본 코드를 넣으세요.package main
import (
"image/color"
"github.com/flopp/go-staticmaps"
"github.com/fogleman/gg"
"github.com/golang/geo/s2"
)
func newTileProvider() *sm.TileProvider {
t := new(sm.TileProvider)
t.Name = "example-map"
t.Attribution = "(c) OpenMapTiles"
t.TileSize = 256
t.URLPattern = "http://localhost:32769/styles/klokantech-basic/%[2]d/%[3]d/%[4]d.png"
t.Shards = []string{"a", "b", "c"}
return t
}
func main() {
ctx := sm.NewContext()
ctx.SetTileProvider(newTileProvider()) //タイルデータ指定
ctx.SetSize(400, 300)
ctx.SetZoom(17)
//マーカーを追加
spot := s2.LatLngFromDegrees(35.6259434, 139.7251859)
ctx.AddMarker(sm.NewMarker(spot, color.RGBA{0xff, 0, 0, 0xff}, 16.0))
// 画像として出力
img, _ := ctx.Render()
gg.SavePNG("my-map.png", img)
}
이것은 메인입니다."go"로 저장하고 실행하면 다음 이미지가 출력됩니다.
해설
지금부터 소스 코드를 설명합니다.newTileProvider
함수
지도를 표시하는 데 사용할 기와 조각 데이터를 지정합니다.
앞에서 설명한 대로 기본 기와 조각 데이터를 사용하려면 이 함수가 필요하지 않습니다.
여기에 방금 준비한 OpenMapTiles의 타일 데이터의 URL 지정 이외에 몇 가지 파라미터가 설정되어 있지만 URLPattern
와TileSize
이외에는 모두 필수적이지 않기 때문에 없어도 상관없다.Attribution
를 지정하지 않으면 이미지 아래에 검은색 테이프가 표시되지 않습니다.URLPattern
의%[2]d
,%[3]d
,%[4]d
는 각각 줌, x 좌표, y 좌표에 대응한다.
URLPattern의 URL을 아래 위치에서 가져옵니다.그리고 {z}
가 %[2]d
로 변하는 곳을 x와 y로 바꾸면 된다.
main
함수ctx.SetSize
와 ctx.SetZoom
는 임의로 설정할 수 있는 매개 변수다.전체 맵 이미지의 크기와 배율을 지정할 수 있습니다.
지정하지 않으면 자동으로 치수와 배율로 조정됩니다.
표시가 추가된 부분에서 좌표는 한 번에 전달됩니다s2.LatLngFromDegrees
.
이런 수치의 좌표는 LatLng
형으로 바꾸어 sm.NewMarker
에 전달할 수 있다.sm.NewMarker
에서 태그를 배치할 좌표, 색상 및 치수를 지정하여 태그 인스턴스를 생성합니다.Render
함수는 타일 데이터에 표시나 경로 등을 그리고 반환합니다.gg.SavePNG
를 사용하여 확장자와 파일 이름을 지정하여 저장합니다.
경로도 추가하고 싶어요.
방금 전의 코드를 약간 수정하면 태그 사이에 경로를 그릴 수 있습니다. //マーカーを追加
spot1 := s2.LatLngFromDegrees(35.6259434, 139.7251859)
ctx.AddMarker(sm.NewMarker(spot1, color.RGBA{0xff, 0, 0, 0xff}, 16.0))
spot2 := s2.LatLngFromDegrees(35.620023, 139.72818)
ctx.AddMarker(sm.NewMarker(spot2, color.RGBA{0, 0xff, 0, 0xff}, 16.0))
// パスを追加
path := new(sm.Path)
path.Positions = []s2.LatLng{spot1, spot2}
path.Color = color.RGBA{0, 0, 0xff, 0xff} //パスの色
path.Weight = 3.0 //パスの幅
ctx.AddPath(path)
영역 추가하기
태그와 경로뿐만 아니라 지정된 위치도 채울 수 있습니다. //マーカーを追加
spot1 := s2.LatLngFromDegrees(35.6259434, 139.7251859)
ctx.AddMarker(sm.NewMarker(spot1, color.RGBA{0xff, 0, 0, 0xff}, 16.0))
spot2 := s2.LatLngFromDegrees(35.620023, 139.72818)
spot3 := s2.LatLngFromDegrees(35.626159, 139.723602)
// エリアを追加
area := new(sm.Area)
area.Positions = []s2.LatLng{spot1, spot2, spot3}
area.Color = color.RGBA{0, 0, 0xff, 0xff} //パスの色
area.Fill = color.RGBA{0, 0xff, 0xff, 0xff} //塗りつぶす色
area.Weight = 3.0 //パスの幅
ctx.AddArea(area)
총결산
간단하게 지도 타일 서버 준비부터 지도 타일 데이터에 표시를 하거나 경로를 그릴 수 있다.대단해!!
이렇게 하면 언제든지 자신만의 지도 이미지를 만들 수 있다.
나는 도서관의 내용도 매우 간단하고 쫓기 쉬우며 관심 있는 사람이 가서 보면 매우 재미있을 것이라고 생각한다.
덤
예?지금도 충분히 간단한데 지도 이미지를 더 간단하게 만들고 싶으세요?
그런 사람을 위해서.go-staticmaps도 명령줄에서 실행할 수 있습니다.go get -u github.com/flopp/go-staticmaps/create-static-map
를 참고하십시오.$ create-static-map -m "35.6259434,139.7251859"
그러면
이렇게압도적인 간편함.물론 경로를 당기거나 구역을 포위하거나 라이브러리를 포위할 때 기능은 기본적으로 변하지 않는다.
하지만 OpenMapTiles처럼 자신이 준비한 타일 서버에서는 타일 데이터를 얻을 수 없으니 주의하십시오.
그럼 편안한 지도 이미지 생활을 즐기세요.
Reference
이 문제에 관하여(OpenMactiles 및 go-Staticmaps), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukumaru/items/62b54a45ece1d47c9d1a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
가고 싶지만 그 전에 이번에 사용할 타일 데이터를 준비하겠습니다.
이번에 사용된 지도 타일 데이터OpenMapTiles.
사실 자신이 타일 데이터를 준비하지 않아도 go-staticmaps는 OpenStreetMap의 타일 데이터를 기본적으로 사용해서 지도를 표시할 수 있다.
하지만 OpenMapTiles는 기본적으로 여러 가지 스타일이 있는데 취향에 따라 바꿀 수 있기 때문에 이번에는 타일 서버를 사용해 보기로 했다.
배열 데이터 준비
준비는 간단하다.공식적으로 Docker를 사용하여 타일 서버를 만드는 프로그램을 제공하기 때문에 프로그램대로 진행됩니다.
https://openmaptiles.com/server/#install
시간이 좀 걸리겠지만 딱히 막히는 곳이 없다고 생각해서 자세한 설명은 필요 없지만 일본 전체의 타일 데이터를 다운받아 localhost로 연결하면 이런 지도가 나올 것 같아요.
go-staticmaps 사용
그럼 goo-taticmaps를 사용하세요.
우선 원본 코드를 넣으세요.
package main
import (
"image/color"
"github.com/flopp/go-staticmaps"
"github.com/fogleman/gg"
"github.com/golang/geo/s2"
)
func newTileProvider() *sm.TileProvider {
t := new(sm.TileProvider)
t.Name = "example-map"
t.Attribution = "(c) OpenMapTiles"
t.TileSize = 256
t.URLPattern = "http://localhost:32769/styles/klokantech-basic/%[2]d/%[3]d/%[4]d.png"
t.Shards = []string{"a", "b", "c"}
return t
}
func main() {
ctx := sm.NewContext()
ctx.SetTileProvider(newTileProvider()) //タイルデータ指定
ctx.SetSize(400, 300)
ctx.SetZoom(17)
//マーカーを追加
spot := s2.LatLngFromDegrees(35.6259434, 139.7251859)
ctx.AddMarker(sm.NewMarker(spot, color.RGBA{0xff, 0, 0, 0xff}, 16.0))
// 画像として出力
img, _ := ctx.Render()
gg.SavePNG("my-map.png", img)
}
이것은 메인입니다."go"로 저장하고 실행하면 다음 이미지가 출력됩니다.해설
지금부터 소스 코드를 설명합니다.
newTileProvider
함수지도를 표시하는 데 사용할 기와 조각 데이터를 지정합니다.
앞에서 설명한 대로 기본 기와 조각 데이터를 사용하려면 이 함수가 필요하지 않습니다.
여기에 방금 준비한 OpenMapTiles의 타일 데이터의 URL 지정 이외에 몇 가지 파라미터가 설정되어 있지만
URLPattern
와TileSize
이외에는 모두 필수적이지 않기 때문에 없어도 상관없다.Attribution
를 지정하지 않으면 이미지 아래에 검은색 테이프가 표시되지 않습니다.URLPattern
의%[2]d
,%[3]d
,%[4]d
는 각각 줌, x 좌표, y 좌표에 대응한다.URLPattern의 URL을 아래 위치에서 가져옵니다.그리고
{z}
가 %[2]d
로 변하는 곳을 x와 y로 바꾸면 된다.main
함수ctx.SetSize
와 ctx.SetZoom
는 임의로 설정할 수 있는 매개 변수다.전체 맵 이미지의 크기와 배율을 지정할 수 있습니다.지정하지 않으면 자동으로 치수와 배율로 조정됩니다.
표시가 추가된 부분에서 좌표는 한 번에 전달됩니다
s2.LatLngFromDegrees
.이런 수치의 좌표는
LatLng
형으로 바꾸어 sm.NewMarker
에 전달할 수 있다.sm.NewMarker
에서 태그를 배치할 좌표, 색상 및 치수를 지정하여 태그 인스턴스를 생성합니다.Render
함수는 타일 데이터에 표시나 경로 등을 그리고 반환합니다.gg.SavePNG
를 사용하여 확장자와 파일 이름을 지정하여 저장합니다.경로도 추가하고 싶어요.
방금 전의 코드를 약간 수정하면 태그 사이에 경로를 그릴 수 있습니다.
//マーカーを追加
spot1 := s2.LatLngFromDegrees(35.6259434, 139.7251859)
ctx.AddMarker(sm.NewMarker(spot1, color.RGBA{0xff, 0, 0, 0xff}, 16.0))
spot2 := s2.LatLngFromDegrees(35.620023, 139.72818)
ctx.AddMarker(sm.NewMarker(spot2, color.RGBA{0, 0xff, 0, 0xff}, 16.0))
// パスを追加
path := new(sm.Path)
path.Positions = []s2.LatLng{spot1, spot2}
path.Color = color.RGBA{0, 0, 0xff, 0xff} //パスの色
path.Weight = 3.0 //パスの幅
ctx.AddPath(path)
영역 추가하기
태그와 경로뿐만 아니라 지정된 위치도 채울 수 있습니다.
//マーカーを追加
spot1 := s2.LatLngFromDegrees(35.6259434, 139.7251859)
ctx.AddMarker(sm.NewMarker(spot1, color.RGBA{0xff, 0, 0, 0xff}, 16.0))
spot2 := s2.LatLngFromDegrees(35.620023, 139.72818)
spot3 := s2.LatLngFromDegrees(35.626159, 139.723602)
// エリアを追加
area := new(sm.Area)
area.Positions = []s2.LatLng{spot1, spot2, spot3}
area.Color = color.RGBA{0, 0, 0xff, 0xff} //パスの色
area.Fill = color.RGBA{0, 0xff, 0xff, 0xff} //塗りつぶす色
area.Weight = 3.0 //パスの幅
ctx.AddArea(area)
총결산
간단하게 지도 타일 서버 준비부터 지도 타일 데이터에 표시를 하거나 경로를 그릴 수 있다.대단해!!
이렇게 하면 언제든지 자신만의 지도 이미지를 만들 수 있다.
나는 도서관의 내용도 매우 간단하고 쫓기 쉬우며 관심 있는 사람이 가서 보면 매우 재미있을 것이라고 생각한다.
덤
예?지금도 충분히 간단한데 지도 이미지를 더 간단하게 만들고 싶으세요?
그런 사람을 위해서.go-staticmaps도 명령줄에서 실행할 수 있습니다.go get -u github.com/flopp/go-staticmaps/create-static-map
를 참고하십시오.$ create-static-map -m "35.6259434,139.7251859"
그러면
이렇게압도적인 간편함.물론 경로를 당기거나 구역을 포위하거나 라이브러리를 포위할 때 기능은 기본적으로 변하지 않는다.
하지만 OpenMapTiles처럼 자신이 준비한 타일 서버에서는 타일 데이터를 얻을 수 없으니 주의하십시오.
그럼 편안한 지도 이미지 생활을 즐기세요.
Reference
이 문제에 관하여(OpenMactiles 및 go-Staticmaps), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukumaru/items/62b54a45ece1d47c9d1a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
예?지금도 충분히 간단한데 지도 이미지를 더 간단하게 만들고 싶으세요?
그런 사람을 위해서.go-staticmaps도 명령줄에서 실행할 수 있습니다.
go get -u github.com/flopp/go-staticmaps/create-static-map
를 참고하십시오.$ create-static-map -m "35.6259434,139.7251859"
그러면이렇게압도적인 간편함.물론 경로를 당기거나 구역을 포위하거나 라이브러리를 포위할 때 기능은 기본적으로 변하지 않는다.
하지만 OpenMapTiles처럼 자신이 준비한 타일 서버에서는 타일 데이터를 얻을 수 없으니 주의하십시오.
그럼 편안한 지도 이미지 생활을 즐기세요.
Reference
이 문제에 관하여(OpenMactiles 및 go-Staticmaps), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsukumaru/items/62b54a45ece1d47c9d1a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)