Има ли начин за избор на lat1,lat2,lon1,lon2 от Envelope(Poly) в MySQL?

Ако имам колона, наречена Поли от тип многоъгълник в MySQL и искам да получа СЗ ъгъл и СИ ъгъл и ЮИ ъгъл и ЮЗ ъгъл, как да направя това? От Envelope() трябва да има lat1, lat2, lon1 и lon2, които образуват четирите ъгъла, както следва lat1,lon1 е NW; lat1,lon2 е NE; lat2,lon2 е SE; и lat2,lon1 е SW. Когато опитам X(PointN(Envelope(Poly),1)) AS lat1 винаги връща NULL. Може ли това да стане в MySQL?

SELECT
    X(PointN(Envelope(Poly),1)) AS lat1, X(PointN(Envelope(Poly),3)) AS lat2,
    Y(PointN(Envelope(Poly),1)) AS lon1, Y(PointN(Envelope(Poly),2)) AS lon2
FROM boundaries.mt_us_zip5_2013_boundaries_polys_bin
WHERE zip = '00601';

Горната заявка връща:

NULL,NULL,NULL,NULL

Ето как изглежда пликът:

SELECT AsText(Envelope(Poly))
FROM boundaries.mt_us_zip5_2013_boundaries_polys_bin
WHERE zip = '00601';

Тази последна заявка връща:

POLYGON((18.111929 -66.836366,18.250344 -66.836366,18.250344 -66.659293,18.111929 -66.659293,18.111929 -66.836366))

Използвам MySQL версия 5.5.36, дали надграждането до нова версия на MySQL ще ми даде функциите, от които се нуждая?


person Roberto Murphy    schedule 09.05.2014    source източник


Отговори (2)


PointN е дефиниран само на LineString, но за щастие можете да извикате ExteriorRing на Polygon, за да получите LineString. Във вашия пример:

SELECT
    X(PointN(ExteriorRing(Envelope(Poly)),1)) AS lat1,
    X(PointN(ExteriorRing(Envelope(Poly)),3)) AS lat2,
    Y(PointN(ExteriorRing(Envelope(Poly)),1)) AS lon1, 
    Y(PointN(ExteriorRing(Envelope(Poly)),2)) AS lon2
FROM boundaries.mt_us_zip5_2013_boundaries_polys_bin
WHERE zip = '00601';
person Jan Misker    schedule 04.06.2014

Не съм достатъчно запознат с MySQL, ако има това вградено, но първата ми мисъл беше първо да намеря в центъра на многоъгълника, след това да изчисля посоката във всяка точка на полигона от центъра. Пеленг 0 би бил север, а азимут 90 градуса би бил изток, следователно североизток ще бъде 45 градуса. Намерете точките, които са най-близо до ъглите от 45 градуса, които ви дават ъглите.

Центърът на многоъгълника е тук: Изчисляване на централна точка на ширина и дължина на многоъгълник в PHP

Изчисляване на пеленг от 2 точки по ширина/дължина: http://www.movable-type.co.uk/scripts/latlong.html

person TreyA    schedule 09.05.2014
comment

Инсталирайте node.js x86 версия (Не x64 версия, дори ако имате 64-битов компютър) Можете да я изтеглите от https://nodejs.org/en/download/

Всички останали отговори не са необходими.

  • Няма нужда от "coffee-script-source" или "execjs"
  • Няма нужда да променяте дори execjs файлове
  • Няма нужда да добавяте път за Node.js, тъй като x86 го добавя автоматично

След като инсталирате node.js, трябва да рестартирате rails сървъра И CMD shell, където се изпълнява, за да актуализирате пътя, който ще види.

- person Roberto Murphy; 09.05.2014