<div dir="ltr"><div>***</div>I was geocoding the following address:<div><br></div><div><div>SELECT g.rating, ST_X(g.geomout) As lon, ST_Y(g.geomout) As lat,</div><div>(addy).address As stno, (addy).streetname As street,</div>
<div>(addy).streettypeabbrev As styp, (addy).location As city, (addy).stateabbrev As st,(addy).zip</div><div>FROM geocode('<b>100 El Camino Real, Menlo Park, CA 94025</b>') As g;</div></div><div><br></div><div style>
All the returned results are wrong, even cities don't match. </div><div style><br></div><div style>*****</div><div style>I did a workaround by manually supplying the address components:</div><div style><br></div><div style>
<div>SELECT g.rating, ST_X(g.geomout) As lon, ST_Y(g.geomout) As lat,</div><div>(addy).address As stno, (addy).streetname As street,</div><div>(addy).streettypeabbrev As styp, (addy).location As city, (addy).stateabbrev As st,(addy).zip</div>
<div>FROM geocode(row<b>(100,'','El Camino Real','','','','Menlo Park', 'CA', '94025',true)</b>::norm_addy) As g;</div><div><br></div><div style>This second query gives a closer answer (street number is 101, on the other side of the street). Is this the only workaround? This would assume my addresses are already correctly parsed by another program.</div>
<div style><br></div><div style>*****</div><div style> It seems the problem is with address normalization:</div><div style><br></div><div style><div><div>SELECT normalize_address('100 El Camino Real, Menlo Park, CA 94025');</div>
<div>             normalize_address</div><div>--------------------------------------------</div><div><b> (100,,Real,Cam,E,,"Menlo Park",CA,94025,t)</b></div><div>(1 row)</div></div><div><br></div><div>****</div>
<div style>On the other hand, <a href="http://geocoder.us">geocoder.us</a> can parse the address correctly, and it's on the correct side of the street.</div><div><br></div><div><br></div></div></div></div>