Hi Peter
re: "I am still not clear how best to use the data available" - I have
written a simple bit of VBA that enables address data to be retrieved
for a given UPRN (I attach the VBA used in a form for Excel) - this only
works for Scotland but may be available elsewhere. Using the concept you
can use Python (a friend has done some preliminary work) or similar.
This is not elegant but is perhaps a first step in enabling a whole lot
of development?
Cheers
Nick
On 02/07/2020 18:38, Peter Neale via Talk-GB wrote:
Hi Robert,
Many thanks for producing that map.
I was able to look at my street and see a blue pin in each of the
building outlines that I had mapped from aerial imagery, so that gave
me a warm, smug feeling :)
I too noticed some not-yet-there properties in a nearby development
that had UPRNs assigned - Not a problem really (IMHO). There is also
one allocated to a pond near me; I didn't know that was "addressable"!
However, I am still not clear how best to use the data available, if
you can't use it to look up the address of the property. Similarly, I
am not sure how a data consumer could use the data, if we laboriously
edited every property in OSM to include a "ref:GB:UPRN=" tag (or
similar; other tags are available.....).
Sorry not to be able to contribute something more useful... :(
Regards,
Peter
On Thursday, 2 July 2020, 17:40:51 BST, Robert Whittaker (OSM lists)
<robert.whittaker+...@gmail.com> wrote:
I'm not completely sure if/how we can best make use of the new OS
OpenData (UPRNs, USRNs and related links) in OpenStreetMap, but as a
first step I've set up a quick slippy map with the UPRN locations
shown:
https://osm.mathmos.net/addresses/uprn/
<https://osm.mathmos.net/addresses/uprn/ >(zoom in to level 16 to show
the data)
The UPRN dataset literally just contains the UPRN number and its
coordinates (both OS National Grid and WGS lat/lon). There are some
additional linking datasets that link these ids to other ids (e.g.
USRNs, TOIDs). But no address information is available directly. (You
may be able to get street names by matching to OS Open Roads via TOIDs
though. Coupled with Code-Point Open, you might be able to assign
quite a few postcodes in cases where there's only one unit for a whole
street.)
The UPRN data has already helped me find a mapping error I made
locally though -- it looks like I'd accidentally missed drawing a
house outline from aerial imagery, and also classified a large garage
a few doors down as a house. The two errors cancelled out when the
houses were numbered sequentially, so I didn't notice until now. Today
though I spotted a UPRN marker over some blank space on the map, and
no marker over the mapped house that's probably a garage.
Now a few initial thoughts on the data that I've explored so far:
I believe that the UPRNs are assigned by local authorities, so
conventions may vary from place to place. I don't know who actually
assigns the coordinates (authority or OS). Looking at those for rows
of houses around me, they don't seem to have been automatically given
coordinates from the house footprint, it looks more like someone
manually clicking on a map.
The UPRN dataset should include all addressable properties. It is also
ahead of reality in some places, as it includes locations for houses
on a new development near me that have yet to be built yet. For blocks
of apartments/flats, the UPRN nodes may all have the same coordinates
or may be displaced from each other, possibly in an artificial manner.
Other objects also appear to have UPRNs. Likely things I've noticed so
far include: car parks, post boxes, telephone boxes (even after
they've been removed), electricity sub-stations, roads and recorded
footpaths (the UPRN locations seem to be at one end of the street, so
usually lie at a junction), recreation grounds / play areas,
floodlight poles (around sports pitches), and allotments. There's no
information about the object type in the UPRN data unfortunately.
Anyway, I hope some of this is useful / interesting. I hope to be on
the OSMUK call on Saturday to discuss things further. Best wishes,
Robert.
--
Robert Whittaker
https://osm.mathmos.net/
_______________________________________________
Talk-GB mailing list
Talk-GB@openstreetmap.org <mailto:Talk-GB@openstreetmap.org>
https://lists.openstreetmap.org/listinfo/talk-gb
_______________________________________________
Talk-GB mailing list
Talk-GB@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-gb
Private Sub CommandButton1_Click()
On Error GoTo ErrorHandler
Dim wBk As Workbook
Dim wSht As Worksheet
Dim r As Long
Set wBk = ActiveWorkbook
Set wSht = wBk.Worksheets("UPRN")
r = wSht.Range("A" & wSht.Rows.Count).End(xlUp).Row
r = r + 1
Dim UPRN As String
If IsNumeric(Me.TextBox1.Value) = False Then
MsgBox "UPRN must be numeric"
Exit Sub
End If
If Len(Me.TextBox1.Value) > 12 Then
MsgBox "UPRNs are integers that can be up to 12 digits in length"
Exit Sub
End If
UPRN = VBA.Trim(Me.TextBox1.Value)
Dim strURL
strURL = "https://osg.scot/portal/index.jsp?uprn=" & UPRN
Dim strError As String
strError = ""
Dim oXMLHTTP As MSXML2.XMLHTTP
Set oXMLHTTP = New MSXML2.XMLHTTP
Dim strResponse As String
strResponse = ""
Dim myStr As String
myStr = ""
Dim startPos As Long
Dim endPos As Long
Dim Result() As String
Dim i As Long
Dim subStr As String
Dim subPos As Long
Dim subLen As Long
With oXMLHTTP
.Open "GET", strURL, False
.send ""
If .Status <> 200 Then
strError = .statusText
GoTo CleanUpAndExit
Else
'If .getResponseHeader("Content-type") <> "text/html" Then
' strError = "Not an HTML file"
' GoTo CleanUpAndExit
'Else
strResponse = .responseText
'End If
End If
End With
CleanUpAndExit:
On Error Resume Next
Set oXMLHTTP = Nothing
If Len(strError) > 0 Then
MsgBox strError
Else
startPos = InStr(strResponse, "document.getElementById('add')")
endPos = InStr(strResponse, "var markers")
myStr = Mid(strResponse, startPos, endPos - startPos)
Result = Split(myStr, "var ")
For i = LBound(Result()) + 1 To UBound(Result()) - 1
subStr = Result(i)
subPos = InStr(subStr, "=")
subLen = Len(subStr)
subStr = Right(subStr, subLen - subPos)
subStr = Replace(subStr, ";", "")
subStr = Replace(subStr, "'", "")
wSht.Cells(r, i) = subStr
Next i
End If
Me.TextBox1.Value = ""
Me.Hide
Exit Sub
ErrorHandler:
strError = Err.Description
Resume CleanUpAndExit
End Sub
_______________________________________________
Talk-GB mailing list
Talk-GB@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-gb