Nogle projekter i Grønlandske jobs

Hvor jeg inddrager WMS-tjenester, oprenser data mv

Offentlige Adresseregister i Grønland

Jeg har arbejdet med at rette enkeltfejl hos Asiaq, især enhedsadresser=lejlighedsadresser tilknyttet bygningsindgang, har mange fejl.

Oprense kundedata for offentlige energiselskab

I projektjob hos energiselskabet har jeg fået rimelig succes med at oprense meget beskidte adressefelt data, se http://bjarnephys.site/job/Suloraq_elkunder.txt filen. Data er udskrevet i csv-filer fra Axapta-system. Filerne er hentet ind i simpel SQLite database i Pythonkode, hvorfra jeg laver requests.

Nyttig hjemmesiden for energikunden, mit forslag

Med kunde-data (som nemt kan geolokaliseres) og data for kundernes energiforbrug vil man kunne lave spændende analyser over energiforbruget forskellige steder i Grønland. Man vil kunne lave hjemmeside for kunden, hvor han kan se eget forbrug og sammenligne sit forbrug med andre borgers, med korrektion for klima(ved inddragelse af antal graddage for boligens sted). Jeg foreslog at lave det i løbet af en uges tid, men de er i gang med forkromet hjemmeside, som dog næppe kommer det første år - nå men sådan er der så meget..

Oprense Offentlige Adresseregister ved samkørsel med energiselskabets kundedata

Ved at sammenkøre med kunderegisteret for energiselskabet, vil jeg kunne udskrive fejllister og lave mange automatiske rettelser. Tjekke at lejlighedsnumre i energiselskabets data passer med enhedsadresserne. Jeg har lavet samkørsel for vej med mange problemer:

http://bjarnephys.site/job/samkoersel-elkunde-grunddata-registeret.txt

En analyse af datamodellen for Offentlige Adresseregister, REST-services

I analysen kan man med fordel bruge opslag i QGIS, som vist herunder

ArcGIS REST Services Directory

Login

Home > services > Grunddataregistre > Adresseregister_offentlig (MapServer)

Help | API Reference

JSON | SOAP | WFS

Grunddataregistre/Adresseregister_offentlig (MapServer)

Layers:

Tables(uden geometri):

Bygning og Adgangsadresse er knyttet sammen med to unikke nøgler:

Adgangsadresse. bygning_id <-> Bygning. GlobalID den sikre reference, autogenerede ved indsættelse af data i tabel

Adgangsadresse.BNummer<-> Bygning. B_nummer attribut-værdier hentet fra oprindelige data, relationen kan bruges til tjek af konsistens af B-numre(Hver bygning i Grønland skal have unikt B-nummer, der er også rod med disse data)

Layer: Bygning (ID: 2)

Name: Bygning
Fields:

-entry for B-3863-Nuuk

·       A-nummer = Null
·       B-nummer = B-3863
·       BygningSumiffik = {ADC118A5-9514-4B61-B7AE-E9A6D75B4F05}
·       CreationDate = 29-09-2017 16:12:36
·       EditDate = 29-08-2018 10:31:41
·       GlobalID = {76AF20EB-A95F-40C8-8A1B-3086B3C05AD5}
·       OBJECTID = 13968
·       SHAPE = Polygon
·       SHAPE.STArea() = 0
·       SHAPE.STLength() = 0,001179
·       location_id = {F0966470-F09F-474D-A820-E8A46ED6FCC7}

"features": [
·         {
·          "attributes": {
·           "OBJECTID": 13968,
·           "B_nummer": "B-3863",
·           "CreationDate": 1506701556000,
·           "EditDate": 1535538701000,
·           "a_nummer": null,
·           "BygningSumiffik": "{ADC118A5-9514-4B61-B7AE-E9A6D75B4F05}",
·           "location_id": "{F0966470-F09F-474D-A820-E8A46ED6FCC7}",
·           "GlobalID": "{76AF20EB-A95F-40C8-8A1B-3086B3C05AD5}",
·           "SHAPE.STArea()": 6.4879941419349052e-08,
·           "SHAPE.STLength()": 0.0011785954756234963
·          },
·       

https://kort.nunagis.gl/refserver/rest/services/Grunddataregistre/Adresseregister_offentlig/MapServer

Layer: Adgangsadresse (ID: 0)

https://kort.nunagis.gl/refserver/rest/services/Grunddataregistre/Adresseregister_offentlig/MapServer/0/query?where=+BNummer%3D%27B-3863%27&outFields=*&returnGeometry=true&f=json

Name: Adgangsadresse

Fields:

Adgangsadresse -entry for B-3863-Nuuk

[{"attributes":{"OBJECTID":10737,"BNummer":"B-3863","CreationDate":1535035686000,"EditDate":1537427597000,"ObjektStatus":2,"HusNummer":"3","KommuneKode":956,"LokalitetsKode":"0600","Postnummer":3905,"Vejkode":"0312","DataKilde":1,"bygning_id":"{76AF20EB-A95F-40C8-8A1B-3086B3C05AD5}","GlobalID":"{07881FB5-BC75-4BAD-9CBC-AAF107A187A6}","AdgangsadresseSumiffik":"{AFAA5575-403D-4FC8-9A5F-BFD2CC7C27EF}"},"geometry":{"x":-113184.04357783718,"y":7176823.9234593902}}]}

Sumiffik fra sumi=hvor

Enhedsadresse -entry for B-3863-Nuuk

access_adress_id='07881FB5-BC75-4BAD-9CBC-AAF107A187A6' ->Adgangsadresse.GlobalID

"features": [

{
   "attributes": {
    "OBJECTID": 53004,
    "Enhedsnummer": "1",
    "access_adress_id": "{07881FB5-BC75-4BAD-9CBC-AAF107A187A6}",
    "CreationDate": null,
    "EditDate": 1539767488000,
    "Datakilde": 1,
    "Enhedsanvendelse": 1,
    "Etage": null,
    "Objektstatus": 2,
    "Dor_lejlighedsnummer": "1",
    "EnhedsadresseSumiffik": "{1603FEC8-8F37-4D23-962D-DF2D513F8BEE}",
    "GlobalID": "{0C220EA6-ECD1-4E79-AD9F-7517065FE3FB}"
   }
,..,
  {
   "attributes": {
    "Enhedsnummer": "104"
   }
  }
 ]

Finder lejlighedsnumre for hvert HusNo på vejstykke med denne pythonkode:

grunddatareg(lokalitetskode='0600',vejkode='0157')

def grunddatareg(lokalitetskode,vejkode):
    #lokalitetskode = '0600'; vejkode = '0157'
    attributes_betegnelse = "attributes"  # for json
    # attributes_betegnelse="properties" # for geojson
    format='json'
    orderByFields = 'HusNummer'
    outFields = 'GlobalID,LokalitetsKode,HusNummer'
    print('lokalitetskode:',lokalitetskode,'vejkode:',vejkode)
    URL=r"https://kort.nunagis.gl/refserver/rest/services/Grunddataregistre/Adresseregister_offentlig/MapServer/0/query?where=Lokalitetskode='"+lokalitetskode+"'+and+Vejkode='"+vejkode+"'&outFields="+outFields+"&orderByFields="+orderByFields+"&returnGeometry=false&f="+format
    r = requests.get(url=URL)
    # extracting data in json format
    data = r.json()
    print(data)
    features=data['features']
    print('Antal husnumre:',len(features))
    #print('HusNo;globalID;Antal lejlighedsnumre;lejlighedsnumre[nr,anvendelse]')
    print('HusNo;Antal lejlighedsnumre;lejlighedsnumre[nr,anvendelse]')

    i=0
    lejlighedsnumre={}
    orderByFields2 = 'Dor_lejlighedsnummer'
    for f in features:
        i+=1
        attrib=f[attributes_betegnelse]
        HusNummer=attrib['HusNummer']
        global_id=attrib['GlobalID'][1:-1]
        #print(global_id)
        url2 = r"https://kort.nunagis.gl/refserver/rest/services/Grunddataregistre/Adresseregister_offentlig/MapServer/5/query?where=access_adress_id='"+global_id+"'&outFields=GlobalID,Enhedsanvendelse,Objektstatus,Dor_lejlighedsnummer,Enhedsnummer&returnGeometry=false&orderByFields="+orderByFields2+"&f=" + format
        #print(url2)
        r2 = requests.get(url=url2)
        # extracting data in json format
        data2 = r2.json()
        #print(data)
        #print(data['features'])
        lejlighedsnumre[HusNummer]=[]
        # finder lejlighedsnumre for hvert HusNummer:
        for f2 in data2['features']:
            lejlighedsnummer= f2[attributes_betegnelse]['Dor_lejlighedsnummer']
            Enhedsanvendelse=f2[attributes_betegnelse]['Enhedsanvendelse']  # 1 for normal beboelse
            lejlighedsnumre[HusNummer].append([lejlighedsnummer,Enhedsanvendelse])
        #print(HusNummer,';', attrib['GlobalID'],';',len(lejlighedsnumre[HusNummer]),';',lejlighedsnumre[HusNummer] )
        print("{};{};{}".format(HusNummer,len(lejlighedsnumre[HusNummer]),lejlighedsnumre[HusNummer]))


Vejmidte(ID: 1) : giver vejnavn og type

CreationDate = 02-10-2018 10:48:45
EditDate = 16-10-2018 06:55:14
GlobalID = {EF303495-B714-413F-9E4A-274B421F7DFE}
Info = Null
Kommunekode = 956
Lokalitetskode = 0600
OBJECTID = 4053
SHAPE = Polyline
SHAPE.STLength() = 0,001775
Vejadresseringsnavn = Suloraq
Vejkategori = Lokalvej
Vejkode = 0312
VejmidteSumiffik = {097579C1-2CB5-4053-9C68-A4F614C14A82}
Vejnavn = Suloraq

Layer: Enhedsadresse (ID: 5)

Fields:

access_adress_id=’ 76AF20EB-A95F-40C8-8A1B-3086B3C05AD5

Relationships:

Lokalitet (ID: 3) ikke brugbar

OBJECTID: 17
Lokalitetsnavn: Nuuk
CreationDate: 1533816004000
EditDate: 1539673013000
Lokalitetskode: 0600
Kommunekode: 956
Lokalitetsnavn_forkortelse: NUK
Location_type: 1
GlobalID: {F0966470-F09F-474D-A820-E8A46ED6FCC7}
LokalitetSumiffik: {4F46D110-E6AD-46D1-B403-B12063152564}
Lokalitetvejkode: 0
SHAPE.STArea(): 0.016245486728621472
SHAPE.STLength(): 0.5415698390855618
Polygon:
[-117760.75224442012, 7173501.789706894] , [-115871.80357179418, 7183369.081941331] , [-107189.3385519383, 7181706.435218684] more...