@@ -28,8 +28,8 @@ def to_sql(sql_dialect)
2828 #{ sql_dialect . json_strip_nulls } (#{ sql_dialect . json_build_object } (
2929 'type', CASE osm_type WHEN 'n' THEN 'node' WHEN 'w' THEN 'way' WHEN 'r' THEN 'relation' WHEN 'a' THEN 'area' END,
3030 'id', id,
31- 'lon', CASE osm_type WHEN 'n' THEN ST_X(geom)::numeric END,
32- 'lat', CASE osm_type WHEN 'n' THEN ST_Y(geom)::numeric END\
31+ 'lon', CASE osm_type WHEN 'n' THEN ST_X(ST_Transform( geom, 4326) )::numeric END,
32+ 'lat', CASE osm_type WHEN 'n' THEN ST_Y(ST_Transform( geom, 4326) )::numeric END\
3333#{ meta ? ",\n 'timestamp', created" : '' } \
3434#{ meta ? ",\n 'version', version" : '' } \
3535#{ meta ? ",\n 'changeset', changeset" : '' } \
@@ -39,8 +39,8 @@ def to_sql(sql_dialect)
3939 ",
4040 'center', CASE osm_type = 'w' OR osm_type = 'r'
4141 WHEN true THEN #{ sql_dialect . json_build_object } (
42- 'lon', ST_X(ST_PointOnSurface(geom))::numeric,
43- 'lat', ST_Y(ST_PointOnSurface(geom))::numeric
42+ 'lon', ST_X(ST_PointOnSurface(ST_Transform( geom, 4326) ))::numeric,
43+ 'lat', ST_Y(ST_PointOnSurface(ST_Transform( geom, 4326) ))::numeric
4444 )
4545 END"
4646 else
@@ -50,10 +50,10 @@ def to_sql(sql_dialect)
5050 ",
5151 'bounds', CASE osm_type = 'w' OR osm_type = 'r'
5252 WHEN true THEN #{ sql_dialect . json_build_object } (
53- 'minlon', ST_XMin(ST_Envelope(geom))::numeric,
54- 'minlat', ST_YMin(ST_Envelope(geom))::numeric,
55- 'maxlon', ST_XMax(ST_Envelope(geom))::numeric,
56- 'maxlat', ST_YMax(ST_Envelope(geom))::numeric
53+ 'minlon', ST_XMin(ST_Envelope(ST_Transform( geom, 4326) ))::numeric,
54+ 'minlat', ST_YMin(ST_Envelope(ST_Transform( geom, 4326) ))::numeric,
55+ 'maxlon', ST_XMax(ST_Envelope(ST_Transform( geom, 4326) ))::numeric,
56+ 'maxlat', ST_YMax(ST_Envelope(ST_Transform( geom, 4326) ))::numeric
5757 )
5858 END"
5959 end } \
@@ -63,13 +63,15 @@ def to_sql(sql_dialect)
6363 WHEN 'w' THEN " + (
6464 if sql_dialect . st_dump_points
6565 "(SELECT \
66- #{ sql_dialect . jsonb_agg } (#{ sql_dialect . json_build_object } ('lon', ST_X(geom)::numeric, 'lat', ST_Y(geom)::numeric)) \
66+ #{ sql_dialect . jsonb_agg } (#{ sql_dialect . json_build_object } (\
67+ 'lon', ST_X(ST_Transform(geom, 4326))::numeric, \
68+ 'lat', ST_Y(ST_Transform(geom, 4326))::numeric)) \
6769 FROM #{ sql_dialect . st_dump_points } (geom))"
6870 else
6971 "replace(replace(replace(replace(replace((
7072 CASE ST_GeometryType(geom)
71- WHEN 'LINESTRING' THEN ST_AsGeoJson(geom, 7)->'coordinates'
72- ELSE ST_AsGeoJson(geom, 7)->'coordinates'->0
73+ WHEN 'LINESTRING' THEN ST_AsGeoJson(ST_Transform( geom, 4326) , 7)->'coordinates'
74+ ELSE ST_AsGeoJson(ST_Transform( geom, 4326) , 7)->'coordinates'->0
7375 END
7476 )::text, '[', '{\" lon\" :'), \
7577 ',', ',\" lat\" :'), \
0 commit comments