MartyConnelly
martyconnelly at shaw.ca
Wed Sep 20 16:23:11 CDT 2006
If you have an address you can get a geocoded Lat/Long from the address
postal code
It will get you within shooting distance, I know Canada Post sells this
type of database.
Well I tried looking through Australia Post site I couldn't find it,
maybe they sell
through third party so phone them. If you have a lot of addresses maybe
best.
Although I see Australia moving to a more granular DPID than postal code.
Here is some xml test code to hit a web service that returns Lat/Long
internationally for a postal code and country. if you post in their
forums they
may give you australian postal code one, it is not posted to avoid spammers
posting a web site with all place names in australia. They have other web
services to find codes within 10 Km etc.
http://www.geonames.org/export/
Public Sub aussiepostalcode()
'Web service location for countries postal codes to return
'latitude and longitude, should write up more generically
'web service descriptions
'http://www.geonames.org/export/#ws
'don't hammer the site with 1000's of postal codes maybe a daily site limit
'see also
'http://support.microsoft.com/?kbid=313372
'need to set reference to XML 4.0 +
Dim objHTTP As New MSXML2.XMLHTTP
Dim strWebPage As String
'On Error Resume Next
'Retrieve Web Page
' note upper-lowercase important in URL string especially service name
' insert postal code and iso country 2 letter name
'ISO-3166 alpha2 country codes.
' to check just stick url below in IE
strWebPage =
"http://ws.geonames.org/postalCodeSearch?postalcode=2089&country=AU"
' don't get many postal codes at 90 Lat 0 Long in Canada, but it is
there ha ha
'strWebPage =
"http://ws.geonames.org/postalCodeSearch?postalcode=H0H0H0&country=CA"
objHTTP.Open "POST", strWebPage, False
' stick in your web page url above , file type can be anything asp
txt xml html etc.
'depends partially on content type
' generally request header is first line below for forms
objHTTP.setRequestHeader "Content-Type",
"application/x-www-form-urlencoded"
'objHttp.setRequestHeader "Content-Type", "text/xml"
'Post variables depending on html form
objHTTP.send strWebPage
'Check status of page
If Err.Number Or objHTTP.status <> "200" Then
MsgBox Err.Number & Err.Description
MsgBox "Cannot retrieve page!"
Exit Sub
End If
' look at the responses
Debug.Print "1*" & objHTTP.getAllResponseHeaders
Debug.Print "2*" & objHTTP.statusText
Debug.Print "3*" & objHTTP.status
Debug.Print "4*" & objHTTP.responseText
Dim xmlDoc As New MSXML2.DOMDocument40
Dim objNodeList As IXMLDOMNodeList
Dim GeoNode As MSXML2.IXMLDOMNode
xmlDoc.async = False
xmlDoc.loadXML objHTTP.responseText
'error check dom load here and use XPath method for node selection
xmlDoc.setProperty "SelectionLanguage", "XPath"
Set objNodeList = xmlDoc.documentElement.selectNodes("//lat")
Debug.Print objNodeList.length
For Each GeoNode In objNodeList
Debug.Print "Latitude : " & GeoNode.Text
Next
Set objNodeList = xmlDoc.documentElement.selectNodes("//lng")
Debug.Print objNodeList.length
For Each GeoNode In objNodeList
Debug.Print "Longitude : " & GeoNode.Text
Next
End Sub
Borge Hansen wrote:
>Hello List,
>This may be a somewhat OT, but here it is:
>
>I've been asked to come up with a solution for showing information coming from an Access Db onto Maps.
>
>In a nutshell :
>We have Acme Enterprises that operates a number of Acme Centres over a large geographical area.
>Around 20,000 people are employed in total.
>Each day around 2.5% of the work force due to sickness and other reasons for not turning up need to be replaced by relief staff.
>We have : permanent relief staff, casual relief staff and relief sourced through agencies
>
>We need to show various types of information on a map for a particular region:
>- all Acme Centres in the region (pinned to their location address)
>- For a particular Acme Centre the available pool of permanent and casual relief staff (each pinned to their home address) and
>various info about each person (available or not, highest qualification (worker, team manager, centre manager) etc.
>.... etc....
>
>So the web page showing a map has to be rendered in a suitable zoom level, and data pulled from an Access Db will give the necessary
>information to create some pushpins in various shapes and colours ... off the top of my head for example: for staff various shape
>according to qualification and different colour according to whether available or not; and yet another shape for displaying an Acme
>Centre.....
>
>Now, the question is what tools to use?
>
>I've been just starting looking into (i.e. reading about mostly) Mappoint 2006, Mappoint Web Services and Virtual Earth - and all is
>totally new to me.
>
>Microsoft's Mappoint 2006 only have maps for North America and Europe.
>We need it for Downunder!
>As I understand it it's a desktop application with a lot of functionality :
>- Enter an address and it will give you the latitude, longitude coordinates
>- Different types of pushpins to display on the maps
>- Many built in functions and 3rd party add ins for performing a wide variety of tasks and optimization calculations
>
>?? Does anyone know if and when an Australia / New Zealand map set will be available?
>
>Then there is MS Mappoint Webservices - I've downloaded the SDK and established a developer account with MS and will have a closer
>look.... but I understand a subscription license is somewhere in the five digit figures.... Any one having experience with this?
>
>Then there is MS Virtual Earth..... which is the application (?) I've been poking at the most:
>
>I came across the following example of overlaying pushpins from Mappoint 2006 onto Virtual Eath Map:
>http://www.gilleskohl.de/mappoint/PinsToFile2006/Samples/Addressestable.htm
>
>Gilles' add-in can be found here: http://www.gilleskohl.de/mappoint/PinsToFile2006/
>
>I imported the source from the htm web page above into Frontpage, allowed active content, and pre-viewing it in the browser I get
>the same map rendering.
>Too easy...
>
>But I can't make use of his pinstofile function because... no map set for Australia!
>
>I read the following article by Chandu Thota introducing Virtual Earth APIs:
>http://msdn.microsoft.com/msdnmag/issues/06/09/EarthlyDelights/default.aspx
>
>which gives a very good intro to the whole subject...
>
>Now, instead of viewing all of US as the starting map by changing (from the source view of Addressestable.htm) :
>the ShowMap function to the following, we are now rendering a map starting in our backyard and zoomed to a suitable level
>
>*****code snip *****
> function ShowMap()
> {
> map = new VEMap('pinsToFileMap');
> map.LoadMap(new VELatLong(-28.000344,153.408422), 15, "r", false);
>
> AddPins();
> }
>***********************
>
>and if you want some pushpins to appear on the eastcoast of Australia you can try to insert these lines in the function Addpins()
>
>
>****snip**** beware of linebreaks
> AddPin(-28.025344,153.412311,'Sherri Hart Trey Research','<table><tr><td><b>Street Address</b></td><td>501 Corporate
>Centre Drive</td></tr><tr><td><b>City</b></td><td>Franklin</td></tr><tr><td><b>State</b></td><td>TN</td></tr><tr><td><b>ZIP
>Code</b></td><td>37067</td></tr><tr><td><b>Country</b></td><td>US</td></tr></table>','000');
> AddPin(-28.100344,153.412311,'Don Funk Woodgrove Bank','<table><tr><td><b>Street Address</b></td><td>One City Place
>Drive </td></tr><tr><td><b>City</b></td><td>Creve Coeur</td></tr><tr><td><b>State</b></td><td>MO</td></tr><tr><td><b>ZIP
>Code</b></td><td>63141</td></tr><tr><td><b>Country</b></td><td>US</td></tr></table>','000');
> AddPin(-28.200344,153.412311,'John Kelly Adventure Works','<table><tr><td><b>Street Address</b></td><td>One Perimeter
>Park South</td></tr><tr><td><b>City</b></td><td>Birmingham</td></tr><tr><td><b>State</b></td><td>AL</td></tr><tr><td><b>ZIP
>Code</b></td><td>35243</td></tr><tr><td><b>Country</b></td><td>US</td></tr></table>','000');
>*********
>
>So, what I am thinking at this point is that the API set for Virtual Earth appear easy to work with and it's free!
>
>????
>But:
>
>1) How do we get latitude and longitude coordinates for a large number of records?
>Is there any third party software that will go through address information file and return lat long coordinates for an Australian
>map set?
>
>2) Sample of code structure that will read Access table / query and give us data - similar to the data 'hardcoded' into the function
>"function AddPins()" in the htm source code:
>
>.....
>Thanks for reading on .... If any one has input or pointers where to get more information .... much appreciated.....
>
>Regards
>Borge
>
>
>
>
>
>
>
>
--
Marty Connelly
Victoria, B.C.
Canada