I need to find all properties that are contained in a user searched location; a location can be a city, county etc. Every property has a lat and long which can be used to create a POINT in MySQL. The locations are of type GEOMETRY, most of them are POLYGONs and MULTIPOLYGONS. After a week of searching and troubleshooting I can't seem to make the DB give me a match. This is the scenario.
SET @area = (SELECT area.polygon from area where area.city = 'Charlotte' and area.type = 'city');
SET @property = (SELECT property.point from property where id = 397315);
SELECT st_contains(@area, @property);
@area gets the POLYGON for Charlotte.
@property gets the POINT for a property that I am 100% sure is inside Charlotte or inside the POLYGON. I even tested it with external tools for a sanity check.
every time ST_CONTAINS
returns 0! Whatever I do it is always a 0.
I tried using ST_WITHIN
failed. Then I made sure the SRID is the same. First both were set on 4328 still nothing, then I set them on 0, again nothing. I added a spatial index for both the polygon and point still nothing.
This is the POINT that I am matching against POINT (35.086449 -80.741455)
.
For sanity check I ran this query:
select st_contains(
ST_GeomFromText('POLYGON (( 322 322, 322 513, 528 513, 528 322, 322 322 ))'),
ST_GeomFromText('POINT (418 411)'));
Which resulted in 1 which is a match!
What the hell I am missing? Thank you.
Try this
SELECT MBRContains(POLYGON (( 322 322, 322 513, 528 513, 528 322, 322 322 )),
GeomFromText('Point(418 411)')) AS whatEver
Worked for me
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With