преобразование многострочной строки в строку

# #google-bigquery #gis #apache-superset

Вопрос:

у меня есть набор данных, которые должны быть в строчной последовательности только перед преобразованием в geojson, попытался использовать st_dump для преобразования части кода st_makeline, которая отлично работает, но затем у меня возникла проблема с преобразованием его обратно в geojson, вот код «ограничен для выбора только в этом наборе данных».

 select geo from ( 
SELECT
routeID ,  json_extract(st_asgeojson(st_makeline(array_agg(st_geogpoint(locs.lon, 
locs.lat) order by locs.date))),'$.coordinates' )as geo,
FROM 
howardcounty.routebatches
cross join UNNEST(locations) as locs
where  locs.date between {{start_date}} and {{end_date}} 
group by routeID 
order by routeID
limit 100
)where length(geo) -length(replace(geo,"[","")) > 1 2
 

это ошибка при вставке st_dump

 json_extract(st_asgeojson(st_dump(st_makeline(array_agg(st_geogpoint(locs.lon, locs.lat) order by locs.date)))),'$.coordinates' )as geo,
 

st_dump_error

перед json_extract
перед извлечением json
после json_extract
выписка json из geojson

Ответ №1:

ST_Dump возвращает массив GEOGRAPHY объектов, в то время ST_AsGeoJson как преобразует один GEOGRAPHY объект в строку. Если желаемая форма вывода для каждой строки в многострочном наборе должна находиться в отдельной строке, запрос должен сгладить этот массив с помощью UNNEST , аналогично тому, как UNNEST здесь указаны местоположения.

Комментарии:

1. Я использую deck.gl диаграмма путей в надмножестве многострочные строки имеют формат, который не распознан, поэтому мне нужно изменить его на linestring или любой другой метод, который будет работать, включил снимок экрана с результатами приведенного выше запроса, красная стрелка-это многострочная строка, которая вызывает проблему

2. Строки и многострочные строки-это разные типы, невозможно «изменить» многострочную строку на строку. Что вы можете сделать, так это представить многострочную цепочку в виде нескольких строк (см. Мой ответ выше) и нарисовать каждую строку отдельно.

3. Хорошо, я попробовал отменить, но получаю ошибки, не могли бы вы показать мне в коде, как отменить st_dump, а затем преобразовать его в geojson? как я уже говорил, я ограничен только выбором