2011-11-20 3 views
0

내가 세 지리 필드가 실패 이 같은 위도/경도 쌍에서 location :MySQL의 다각형 검색 내 테이블에서

FOR EACH ROW SET NEW.location = PointFromText(CONCAT('POINT(',NEW.lat,' ',NEW.lon,')')) 

나는 데이터가 정확 꽤 확신 모든 종류의 원 쿼리를 수행 할 수 있기 때문입니다. 이제는 폴리곤 쿼리를 수행하고 결과를 반환 할 수 없습니다.

SET @bbox = 'POLYGON((32.70 -117.16, 47.97 -122.19, 44.80 -68.77, 25.77 -80.19, 32.70 -117.16))'; 
SELECT * , AsText(location) 
FROM geo_table 
WHERE Intersects(location, GeomFromText(@bbox)); 

나는 두 SQL 문에 대한 다음과 같은 메시지가 얻을 phpMyAdmin을 통해이 쿼리를 실행 : 참고로, 위의 SET의 @bbox에 표시된 데이터 포인트에서로

# MySQL returned an empty result set (i.e. zero rows). 

을 여기에 내 다각형 쿼리 미국의 4 개 구석 (시계 방향으로 입력)은 모든 점의 99 %를 반환하지만 아무 것도 반환하지 않습니다. 샌디에고, CA : 32.70 -117.16 Seatle, WA : 47.97 -122.19 뱅거, 메인 : 44.80 -68.77 마이애미, FL : 나는 또한 이상에 대해이 시도 25.77 -80.19

다음은 좌표는 NWS CAP 1.1 피드의 3500 다각형과 아무것도 얻지 못했습니다! 나는 내가 틀린 일을해야한다는 것을 알았지 만, 내 삶에 대해 나는 그것이 무엇인지 알 수 없다!

제안 사항?

답변

0

나는 당신이 교차점을 사용해야한다고 생각하지 않습니다. 대신 Contains으로 시도하십시오.

SET @bbox = 'POLYGON((32.70 -117.16, 47.97 -122.19, 44.80 -68.77, 25.77 -80.19, 32.70 -117.16))'; 
SET @USA = GeomFromText(@bbox); 
SET @Lincoln = PointFromText('POINT(40.82 -96.71)'); 
SELECT Contains(@USA, @Lincoln);