40 lines
784 B
Go
40 lines
784 B
Go
|
|
package htmlpage
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
"github.com/uber/h3-go/v4"
|
||
|
|
)
|
||
|
|
|
||
|
|
func gisStatement(cb h3.CellBoundary) string {
|
||
|
|
var content strings.Builder
|
||
|
|
for i, p := range cb {
|
||
|
|
if i != 0 {
|
||
|
|
content.WriteString(", ")
|
||
|
|
}
|
||
|
|
content.WriteString(fmt.Sprintf("%f %f", p.Lng, p.Lat))
|
||
|
|
}
|
||
|
|
// Repeat the first coordinate to close the polygon
|
||
|
|
content.WriteString(fmt.Sprintf(", %f %f", cb[0].Lng, cb[0].Lat))
|
||
|
|
return fmt.Sprintf("ST_GeomFromText('POLYGON((%s))', 3857)", content.String())
|
||
|
|
}
|
||
|
|
|
||
|
|
func latLngDisplay(ll h3.LatLng) string {
|
||
|
|
latDir := "N"
|
||
|
|
latVal := ll.Lat
|
||
|
|
if ll.Lat < 0 {
|
||
|
|
latDir = "S"
|
||
|
|
latVal = -ll.Lat
|
||
|
|
}
|
||
|
|
|
||
|
|
lngDir := "E"
|
||
|
|
lngVal := ll.Lng
|
||
|
|
if ll.Lng < 0 {
|
||
|
|
lngDir = "W"
|
||
|
|
lngVal = -ll.Lng
|
||
|
|
}
|
||
|
|
|
||
|
|
return fmt.Sprintf("%.4f° %s, %.4f° %s", latVal, latDir, lngVal, lngDir)
|
||
|
|
}
|