def sync(self): LIMIT = 0 # 每一種同步動作的次數限制,除錯用 # 注意!! 實驗階段指向測試伺服器 #host = 'api06.dev.openstreetmap.org' host = 'api.openstreetmap.org' user = '******' pwf = '%s/.osmpass' % os.environ['HOME'] # 注意!! 有中文的地方需要使用 unicode 字串型態 chset = { u'comment': u'自動同步 (%s)' % self.source_name, u'created_by': u'小璋流同步機器人 (osmapi/0.6.0)', u'bot': u'yes' } api = OsmApi(api=host, username=user, passwordfile=pwf) api.ChangesetCreate(chset) # 新增/修改/刪除 actions = ['create', 'update', 'delete'] points_map = { 'create': self.points_new, 'update': self.points_changed, 'delete': self.points_disappeared } for act in actions: points = points_map[act] count = 0 failed = 0 total = len(points) for p in points: node = self.toNode(p, api) if node is not None: try: if act == 'create': api.NodeCreate(node) if act == 'update': api.NodeUpdate(node) if act == 'delete': api.NodeDelete(node) except: # TODO: 加入 logger 機制 failed = failed + 1 else: # TODO: 加入 logger 機制 failed = failed + 1 # 計數/次數限制/摘要顯示 count = count + 1 print('\r%s: %d/%d (失敗: %d)' % (act, count, total, failed)), sys.stdout.flush() if count == LIMIT: break print('') return api.ChangesetClose()
def main(): global myOSMAPI config = configparser.ConfigParser() config.read('config.ini') myOSMAPI = OsmApi(username=config.get('OSM', 'OPENSTREETMAP_USERNAME'), password=config.get('OSM', 'OPENSTREETMAP_PASSWORD')) myOSMAPI.ChangesetCreate( {u"comment": u"district wikidata and wikipedia tags"}) i = 0 #reads list of relations that need to be modified txt = open("tmplist", 'r') for place in txt.readlines(): try: i += 1 #get relation details relJSON = myOSMAPI.RelationGet(place) name = relJSON["tag"]["name"] print name #get wikipedia article name qid = open("qidandname", 'r') sch = wikipedia.search(name + '_district', results=1) article = sch[0] print article #get wikidata qid n = wptools.page(sch[0].encode('ascii', 'ignore'), silent=True) qid = n.get_wikidata().wikibase print qid #make changes in osm newrelJSON = relJSON #newrelJSON["tag"]["wikidata"] = qid newrelJSON["tag"]["wikipedia"] = "en:" + article if (i >= 10): myOSMAPI.ChangesetClose() break except: print place + " failed"
async def main(): osm = OsmApi(username=config.get("OSM_SUBMIT_USER"), password=config.get("OSM_SUBMIT_PASSWORD")) print("Connecting...") await database.connect() print("Updating materialised view...") await database.execute("REFRESH MATERIALIZED VIEW CONCURRENTLY solartag.candidates") print("Fetching changes...") while True: res = await database.fetch_all("""SELECT results.osm_id, array_agg(results.user_id) AS users, solartag.int_decision_value(module_count) AS modules FROM solartag.results, solartag.candidates WHERE results.osm_id = candidates.osm_id GROUP BY results.osm_id HAVING solartag.int_decision(module_count) = true AND solartag.int_decision_value(module_count) IS NOT NULL ORDER BY results.osm_id DESC LIMIT 100""") users = set() for row in res: users |= set(row['users']) if len(list(res)) < 10: print("Fewer than 10 new changes, not submitting.") return print(f"Submitting changeset of {len(list(res))} objects...") print("Creating changeset...") osm.ChangesetCreate({"contributor_ids": ";".join(map(str, users)), "source": "https://solartagger.russss.dev", "comment": "Add generator:solar:modules tag", "bot": "yes", "imagery_used": "Bing" }) for row in res: node = osm.NodeGet(row['osm_id']) if 'generator:solar:modules' in node['tag']: print("Tag already exists for node", node['id']) continue node['tag']['generator:solar:modules'] = str(row['modules']) osm.NodeUpdate(node) osm.ChangesetClose() print("Done")
def osm_tenant(self, **kw): bus_ids = http.request.params['bus_ids'] name = http.request.params['name'] citizen = http.request.params['citizen'] rent = http.request.params['rent'] vrn = http.request.params['vrn'] assess = http.request.params['assess'] branch = http.request.params['branch'] tax = http.request.params['tax'] tin = http.request.params['tin'] efd = http.request.params['efd'] valued = http.request.params['valued'] r = requests.get('http://www.openstreetmap.org/api/0.6/way/%s/full' % (bus_ids)) response = BeautifulSoup(r.text) nodes = response.osm.findAll("node") lat = 0 lon = 0 for x in nodes: lat = lat + float(x['lat']) lon = lon + float(x['lon']) lat = lat / len(nodes) lon = lon / len(nodes) MyApi = OsmApi(username=u"Wahab Ali Malik", password=u"Loveodoo") MyApi.ChangesetCreate( {u"comment": u"Adding One of the owner of building"}) print MyApi.NodeCreate({ u"lon": lon, u"lat": lat, u"tag": { u"tenant": u"%s" % (name), u"vrn": u"%s" % (vrn), u"assess": u"%s" % (assess), u"branch": u"%s" % (branch), u"tin": u"%s" % (tin), u"efd": u"%s" % (efd), u"citizen": u"%s" % (citizen), u"valued": u"%s" % (valued), u"rent": u"%s" % (rent), u"tax": u"%s" % (tax), } })
pass finally: termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm) fcntl.fcntl(fd, fcntl.F_SETFL, oldflags) #--- with open('../dolmens/dolmensC.json', 'r') as f: dolmens_dict = json.load(f) # creem la sessió, doncs només vull fer un changeset per tots els canvis MyApi = OsmApi(passwordfile="/home/joan/projectes/OSM/.password") changeset_comment = '{"comment": "Inserció i actualització dòlmens Catalunya (22-02-2020)"}' changeset_comment_json = json.loads(changeset_comment) MyApi.ChangesetCreate(changeset_comment_json) num_item = 1 for dolmen in dolmens_dict: name = dolmen['name'] lat = float(dolmen['lat']) lon = float(dolmen['lon']) hi_es = dolmen['hi_es'] megalith_type = dolmen['megalith_type'] wikipedia = dolmen['wikipedia'] wikidata = dolmen['wikidata'] source = dolmen['source'] alt_name = dolmen['alt_name'] print("=================================")
user = '******' pwf = '%s/.osmpass' % os.environ['HOME'] # 注意!! 有中文的地方需要使用 unicode 字串型態 chset = { u'comment': u'自動同步 U-bike 租借站', u'created_by': u'小璋流同步機器人 (osmapi/0.6.0)' } node = { u'id': 4299484763, u'lat': 25.10, u'lon': 121.0, u'version': 1, } api = OsmApi(api=host, username=user, passwordfile=pwf) api.ChangesetCreate(chset) n = api.NodeGet(4299484799) n = api.NodeDelete(n) print(n) #n = api.NodeUpdate(node) #n = api.NodeDelete(node) cid = api.ChangesetClose() # 更新結果摘要 print('Changeset 編號: %d' % cid) print('URL: http://api06.dev.openstreetmap.org/changeset/%d' % cid) print('Node 編號: %s' % n['id']) print('URL: http://api06.dev.openstreetmap.org/api/0.6/node/%s' % n['id'])
print(munipnumbers) #sys.exit(0) #api = OsmApi(api="api06.dev.openstreetmap.org", username="", password="", changesetauto=True, changesetautotags={"source":"Kartverket"}) #api = OsmApi(api="api06.dev.openstreetmap.org", username="******", passwordfile="./password.txt") if not dryrun: api = OsmApi(username=mypasswords.osmuser, password=mypasswords.osm) #api.NodeGet(123) mycomment = u"addr node update Norway" #mycomment=u"addr node import municipality number "+munipnumberpadded+", Norway" #api.ChangesetCreate({"comment":u"addr node import "+str(sys.argv[2].decode('utf-8')), "source":"Kartverket", "source:date":"2014-08-24"}) if not dryrun: api.ChangesetCreate({ "comment": mycomment, "source": "Kartverket", "source:date": "2017-06-26" }) for munipnumber in munipnumbers: print("\nProcessing %d..." % (munipnumber)) munipnumberpadded = "%04d" % (int(munipnumber)) cursor.execute( "select tid from update_requests where kommunenummer=\"%s\" and ferdig=0 and upload=0 order by tid desc limit 1" % (munipnumber, )) rows = cursor.fetchall() if (len(rows) > 0): print("Waiting for getting updated %s" % (munipnumberpadded)) continue
from osmapi import OsmApi import time MyApi = OsmApi() api = OsmApi(username="******", password="******") import csv with open('temple2.csv', newline='') as File: reader = csv.reader(File) for row in reader: print(row) api.ChangesetCreate({u"comment": u"Siva Temple " + row[1].title()}) data = { u"lat": row[3], u"lon": row[4], u"tag": { u"amenity": u"temple", u"name": row[1].title(), u"location": row[2].title(), u"religion": u"hindu" } } api.NodeCreate(data) api.ChangesetClose() print(data) time.sleep(1)
from osmapi import OsmApi from config_importer import import_config user = import_config("./config.txt", "osm_credentials", "user") password = import_config("./config.txt", "osm_credentials", "password") print(user, password) #api = OsmApi(api="http://api06.dev.openstreetmap.org", username = "******", password = "******", changesetauto=True) api = OsmApi(api="http://api06.dev.openstreetmap.org", username="******", password="******", changesetauto=True) ''' #api = OsmApi(api="api06.dev.openstreetmap.org", username=user, passwordfile=password, changesetauto=True, changesetautotags={"comment":u"changeset auto"}) lat = 52.534395 lon = 13.358543 changeset ={u"comment": u"My first test"} node = {u"lat":lat, u"lon":lon, u"tag":{}} api.ChangesetCreate(changeset) api.NodeCreate(node) api.flush() # to send last updates api.ChangesetClose() ''' api.ChangesetCreate({u"comment": u"My first test"}) print(api.NodeCreate({u"lon": 1, u"lat": 1, u"tag": {"tollmap": "test1"}})) # {u'changeset': 532907, u'lon': 1, u'version': 1, u'lat': 1, u'tag': {}, u'id': 164684}
#Initialise osmapi - Replace the value in username with your username. #Replace the value in password with your password myOSMAPI = OsmApi(username="******", password="******") #retrieve the result nodes using overpass for the Rajajinagar bounding box resultNodes = overpyAPI.query( "[out:json];node(12.9936,77.549,12.99651,77.55526);out;") #Iterate through all the nodes in the result for i in resultNodes.nodes: #filter nodes having tags if (i.tags): tag = i.tags #if Kannada tag(Or any other Indic Tag) is present, filter once more if ("name:kn" in tag.keys()): #transliterate value in tag to required Indic language tag["name:ta"] = kannadaToTamizhTransliterator.transliterate_indic_indic( tag["name:kn"], "kn_IN", "ta_IN") #store the result in a new JSON nodeJSON = {} nodeJSON["id"] = i.id nodeJSON["lat"] = i.lat nodeJSON["lon"] = i.lon nodeJSON["version"] = 8 nodeJSON["tag"] = i.tags #update Node according to osmapi guidelines -1) Create changeset 2) Update node 3)Close changeset myOSMAPI.ChangesetCreate( {u"comment": u"Automating Transliteration"}) myOSMAPI.NodeUpdate(nodeJSON) myOSMAPI.ChangesetClose()
class TestOsmApiNode(osmapi_tests.TestOsmApi): def test_NodeGet(self): self._conn_mock() result = self.api.NodeGet(123) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'GET') self.assertEquals(args[1], '/api/0.6/node/123') self.assertEquals( result, { 'id': 123, 'changeset': 15293, 'uid': 605, 'timestamp': datetime.datetime(2012, 4, 18, 11, 14, 26), 'lat': 51.8753146, 'lon': -1.4857118, 'visible': True, 'version': 8, 'user': '******', 'tag': { 'amenity': 'school', 'foo': 'bar', 'name': 'Berolina & Schule' }, }) def test_NodeGet_with_version(self): self._conn_mock() result = self.api.NodeGet(123, NodeVersion=2) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'GET') self.assertEquals(args[1], '/api/0.6/node/123/2') self.assertEquals( result, { 'id': 123, 'changeset': 4152, 'uid': 605, 'timestamp': datetime.datetime(2011, 4, 18, 11, 14, 26), 'lat': 51.8753146, 'lon': -1.4857118, 'visible': True, 'version': 2, 'user': '******', 'tag': { 'amenity': 'school', }, }) def test_NodeCreate_changesetauto(self): # setup mock self.api = OsmApi(api="api06.dev.openstreetmap.org", changesetauto=True) self._conn_mock(auth=True, filenames=[ 'test_NodeCreate_changesetauto.xml', 'test_ChangesetUpload_create_node.xml', 'test_ChangesetClose.xml', ]) test_node = { 'lat': 47.123, 'lon': 8.555, 'tag': { 'amenity': 'place_of_worship', 'religion': 'pastafarian' } } self.assertIsNone(self.api.NodeCreate(test_node)) def test_NodeCreate(self): self._conn_mock(auth=True) # setup mock self.api.ChangesetCreate = mock.Mock(return_value=1111) self.api._CurrentChangesetId = 1111 test_node = { 'lat': 47.287, 'lon': 8.765, 'tag': { 'amenity': 'place_of_worship', 'religion': 'pastafarian' } } cs = self.api.ChangesetCreate({'comment': 'This is a test dataset'}) self.assertEquals(cs, 1111) result = self.api.NodeCreate(test_node) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'PUT') self.assertEquals(args[1], '/api/0.6/node/create') self.assertEquals(result['id'], 9876) self.assertEquals(result['lat'], test_node['lat']) self.assertEquals(result['lon'], test_node['lon']) self.assertEquals(result['tag'], test_node['tag']) def test_NodeCreate_wo_changeset(self): test_node = { 'lat': 47.287, 'lon': 8.765, 'tag': { 'amenity': 'place_of_worship', 'religion': 'pastafarian' } } with self.assertRaisesRegexp(Exception, 'need to open a changeset'): self.api.NodeCreate(test_node) def test_NodeCreate_wo_auth(self): self._conn_mock() # setup mock self.api.ChangesetCreate = mock.Mock(return_value=1111) self.api._CurrentChangesetId = 1111 test_node = { 'lat': 47.287, 'lon': 8.765, 'tag': { 'amenity': 'place_of_worship', 'religion': 'pastafarian' } } with self.assertRaisesRegexp(UsernamePasswordMissingError, 'Username/Password missing'): self.api.NodeCreate(test_node) def test_NodeUpdate(self): self._conn_mock(auth=True) # setup mock self.api.ChangesetCreate = mock.Mock(return_value=1111) self.api._CurrentChangesetId = 1111 test_node = { 'id': 7676, 'lat': 47.287, 'lon': 8.765, 'tag': { 'amenity': 'place_of_worship', 'name': 'christian' } } cs = self.api.ChangesetCreate({'comment': 'This is a test dataset'}) self.assertEquals(cs, 1111) result = self.api.NodeUpdate(test_node) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'PUT') self.assertEquals(args[1], '/api/0.6/node/7676') self.assertEquals(result['id'], 7676) self.assertEquals(result['version'], 3) self.assertEquals(result['lat'], test_node['lat']) self.assertEquals(result['lon'], test_node['lon']) self.assertEquals(result['tag'], test_node['tag']) def test_NodeDelete(self): self._conn_mock(auth=True) # setup mock self.api.ChangesetCreate = mock.Mock(return_value=1111) self.api._CurrentChangesetId = 1111 test_node = {'id': 7676} cs = self.api.ChangesetCreate({'comment': 'This is a test dataset'}) self.assertEquals(cs, 1111) result = self.api.NodeDelete(test_node) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'DELETE') self.assertEquals(args[1], '/api/0.6/node/7676') self.assertEquals(result['id'], 7676) self.assertEquals(result['version'], 4) def test_NodeHistory(self): self._conn_mock() result = self.api.NodeHistory(123) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'GET') self.assertEquals(args[1], '/api/0.6/node/123/history') self.assertEquals(len(result), 8) self.assertEquals(result[4]['id'], 123) self.assertEquals(result[4]['version'], 4) self.assertEquals(result[4]['lat'], 51.8753146) self.assertEquals(result[4]['lon'], -1.4857118) self.assertEquals(result[4]['tag'], { 'empty': '', 'foo': 'bar', }) def test_NodeWays(self): self._conn_mock() result = self.api.NodeWays(234) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'GET') self.assertEquals(args[1], '/api/0.6/node/234/ways') self.assertEquals(len(result), 1) self.assertEquals(result[0]['id'], 60) self.assertEquals(result[0]['changeset'], 61) self.assertEquals(result[0]['tag'], { 'highway': 'path', 'name': 'Dog walking path', }) def test_NodeRelations(self): self._conn_mock() result = self.api.NodeRelations(4295668179) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'GET') self.assertEquals(args[1], '/api/0.6/node/4295668179/relations') self.assertEquals(len(result), 1) self.assertEquals(result[0]['id'], 4294968148) self.assertEquals(result[0]['changeset'], 23123) self.assertEquals(result[0]['member'][1], { 'role': 'point', 'ref': 4295668179, 'type': 'node', }) self.assertEquals(result[0]['tag'], { 'type': 'fancy', }) def test_NodesGet(self): self._conn_mock() result = self.api.NodesGet([123, 345]) args, kwargs = self.api._conn.putrequest.call_args self.assertEquals(args[0], 'GET') self.assertEquals(args[1], '/api/0.6/nodes?nodes=123,345') self.assertEquals(len(result), 2) self.assertEquals( result[123], { 'id': 123, 'changeset': 15293, 'uid': 605, 'timestamp': datetime.datetime(2012, 4, 18, 11, 14, 26), 'lat': 51.8753146, 'lon': -1.4857118, 'visible': True, 'version': 8, 'user': '******', 'tag': { 'amenity': 'school', 'foo': 'bar', 'name': 'Berolina & Schule' }, }) self.assertEquals( result[345], { 'id': 345, 'changeset': 244, 'timestamp': datetime.datetime(2009, 9, 12, 3, 22, 59), 'uid': 1, 'visible': False, 'version': 2, 'user': '******', 'tag': {}, })
class OsmFix(object): def __init__(self): osm_user = BaseConfig.OSM_USER osm_pass = BaseConfig.OSM_PASSWORD osm_api = BaseConfig.OSM_API_URL self.osm = OsmApi(api=osm_api, appid='Kort', username=osm_user, password=osm_pass) self.kort_api = kort_api.KortApi() def get_for_type(self, type, id): """ Returns the 'getter' of the requested OSM type """ if type == 'node': return self.osm.NodeGet(id) if type == 'way': return self.osm.WayGet(id) if type == 'relation': return self.osm.RelationGet(id) def update_for_type(self, type, new_values): """ Returns the 'update' method of the requested OSM type """ if type == 'node': return self.osm.NodeUpdate(new_values) if type == 'way': return self.osm.WayUpdate(new_values) if type == 'relation': return self.osm.RelationUpdate(new_values) def apply_kort_fix(self, limit=1, dry=False): try: for kort_fix in self.kort_api.read_fix(): try: log.debug("---- Fix from Kort: ----") log.debug("%s" % pprint.pformat(kort_fix)) osm_entity = self.get_for_type(kort_fix['osm_type'], kort_fix['osm_id']) if not osm_entity: raise OsmEntityNotFoundError("OSM entity not found") log.debug("---- OSM type before fix ----") log.debug("%s" % pprint.pformat(osm_entity['tag'])) error_type = errortypes.Error(kort_fix['error_type'], osm_entity) fixed = error_type.apply_fix(kort_fix) fixed_osm_entity, description = fixed log.debug("---- OSM type after fix ----") log.debug("%s" % pprint.pformat(fixed_osm_entity['tag'])) except (errortypes.ErrorTypeError, OsmEntityNotFoundError, ValueError) as e: log.warning("The fix could not be applied: %s, fix: %s" % (str(e), kort_fix)) fixed_osm_entity = None if not dry: if fixed_osm_entity is not None: comment = self.gen_changelog_comment( kort_fix, description) self.submit_entity(kort_fix['osm_type'], fixed_osm_entity, comment, kort_fix) self.kort_api.mark_fix(kort_fix['fix_id']) except Exception as e: log.exception("Failed to apply fix of Kort to OpenStreetMap") def gen_changelog_comment(self, kort_fix, change_description): comment = ( u"Change from kort, user: %s (id: %s), " u"fix id: %s, error: %s (source: %s), " u"description: %s, " u"see this users profile for more information: " u"http://www.openstreetmap.org/user/kort-to-osm" % (kort_fix['username'], kort_fix['user_id'], kort_fix['fix_id'], kort_fix['error_type'], kort_fix['source'], change_description)) return comment def submit_entity(self, type, entity, comment, kort_fix): """ Submits an OSM entity (node, way, relation) to OSM """ self.osm.ChangesetCreate({ "comment": comment[:255], "mechanical": "yes", "kort:username": kort_fix['username'], "kort:user_id": str(kort_fix['user_id']), "kort:fix_id": str(kort_fix['fix_id']), "kort:error_type": kort_fix['error_type'], "kort:error_source": kort_fix['source'] }) changeset = self.update_for_type(type, entity) log.info("%s" % pprint.pformat(changeset)) self.osm.ChangesetClose()
def create_owner(self, **kw): ##################################################### # Assign values to local variables ##################################################### bus_ids = http.request.params['bus_ids'] owner = http.request.params['name'] citizen = http.request.params['citizen'] vrn = http.request.params['vrn'] assess = http.request.params['assess'] branch = http.request.params['branch'] tax = http.request.params['tax'] tin = http.request.params['tin'] efd = http.request.params['efd'] valued = http.request.params['valued'] tenants_id = http.request.params['tenants_id'] ##################################################### # Getting building boarder nodes ##################################################### r = requests.get('http://www.openstreetmap.org/api/0.6/way/%s/full' % (bus_ids)) response = BeautifulSoup(r.text) nodes = response.osm.findAll("node") lat = 0 lon = 0 for x in nodes: lat = lat + float(x['lat']) lon = lon + float(x['lon']) lat = lat / len(nodes) lon = lon / len(nodes) ##################################################### # Conneting to OSM through api ##################################################### MyApi = OsmApi(username=USERNAME, password=PASSWORD) ##################################################### # Info about changeset ##################################################### MyApi.ChangesetCreate( {u"comment": u"Adding One of the Owner of building"}) ##################################################### # Create Node ##################################################### MyApi.NodeCreate({ u"lon": lon, u"lat": lat, u"tag": { u"owner": u"%s" % (owner), u"citizen": u"%s" % (citizen), u"vrn": u"%s" % (vrn), u"assess": u"%s" % (assess), u"branch": u"%s" % (branch), u"tax": u"%s" % (tax), u"tin": u"%s" % (tin), u"efd": u"%s" % (efd), u"valued": u"%s" % (valued), u"tenants_id": u"%s" % (tenants_id), } })
def create_building_information(self, **kw): ##################################################### # Assign values to local variables ##################################################### bus_ids = http.request.params['bus_ids'] property_name = http.request.params['property_name'] ward = http.request.params['ward'] sub_ward = http.request.params['sub_ward'] street = http.request.params['street'] plot_no = http.request.params['plot_no'] post_code_no = http.request.params['post_code_no'] user = http.request.params['user'] tenure = http.request.params['tenure'] owner = http.request.params['owner'] address = http.request.params['address'] walls = http.request.params['walls'] roof = http.request.params['roof'] ceiling = http.request.params['ceiling'] floor = http.request.params['floor'] windows = http.request.params['windows'] doors = http.request.params['doors'] state = http.request.params['state'] services = http.request.params['services'] discription = http.request.params['discription'] room_counts = http.request.params['room_counts'] fixture_and_fittng = http.request.params['fixture_and_fittng'] brif_dis = http.request.params['brif_dis'] main_building = http.request.params['main_building'] out_building = http.request.params['out_building'] site_work = http.request.params['site_work'] condition = http.request.params['condition'] depreciation = http.request.params['depreciation'] ##################################################### # Getting building boarder nodes ##################################################### r = requests.get('http://www.openstreetmap.org/api/0.6/way/%s/full' % (bus_ids)) response = BeautifulSoup(r.text) nodes = response.osm.findAll("node") lat = 0 lon = 0 for x in nodes: lat = lat + float(x['lat']) lon = lon + float(x['lon']) lat = lat / len(nodes) lon = lon / len(nodes) ##################################################### # Conneting to OSM through api ##################################################### MyApi = OsmApi(username=USERNAME, password=PASSWORD) ##################################################### # Info about changeset ##################################################### MyApi.ChangesetCreate( {u"comment": u"Adding Building related Information"}) ##################################################### # Create Node ##################################################### MyApi.NodeCreate({ u"lon": lon, u"lat": lat, u"tag": { u"property_name": u"%s" % (property_name), u"ward": u"%s" % (ward), u"sub_ward": u"%s" % (sub_ward), u"street": u"%s" % (street), u"plot_no": u"%s" % (plot_no), u"post_code_no": u"%s" % (post_code_no), u"user": u"%s" % (user), u"tenure": u"%s" % (tenure), u"owner": u"%s" % (owner), u"address": u"%s" % (address), u"state": u"%s" % (state), u"discription": u"%s" % (discription), u"roof": u"%s" % (roof), u"ceiling": u"%s" % (ceiling), u"walls": u"%s" % (walls), u"windows": u"%s" % (windows), u"doors": u"%s" % (doors), u"floor": u"%s" % (floor), u"room_counts": u"%s" % (room_counts), u"fixture_and_fittng": u"%s" % (fixture_and_fittng), u"brif_dis": u"%s" % (brif_dis), u"main_building": u"%s" % (main_building), u"out_building": u"%s" % (out_building), u"site_work": u"%s" % (site_work), u"services": u"%s" % (services), u"condition": u"%s" % (condition), u"depreciation": u"%s" % (depreciation), } })
rows = cursor.fetchall() if(len(rows) > 0): print("Waiting for getting updated") sys.exit() db.close() #api = OsmApi(api="api06.dev.openstreetmap.org", username="", password="", changesetauto=True, changesetautotags={"source":"Kartverket"}) #api = OsmApi(api="api06.dev.openstreetmap.org", username="******", passwordfile="./password.txt") api = OsmApi(api="api.openstreetmap.org", username=mypasswords.osmuser, password=mypasswords.osm) #api = OsmApi(api="api06.dev.openstreetmap.org", username=mypasswords.osmuser, password=mypasswords.osm) #api.NodeGet(123) mycomment=u"addr node import "+kommunenummer.nrtonavn[int(munipnumber)]+" kommune (delete outdated addresses)" #mycomment=u"addr node import municipality number "+munipnumberpadded+", Norway" #api.ChangesetCreate({"comment":u"addr node import "+str(sys.argv[2].decode('utf-8')), "source":"Kartverket", "source:date":"2014-08-24"}) api.ChangesetCreate({"comment": mycomment, "source":"Kartverket", "source:date":"2016-03-22"}) dom1 = parse(cachedir+"/reports/notmatched_"+str(munipnumberpadded)+".osm") mainelement1 = dom1.getElementsByTagName("osm")[0] nodes = mainelement1.getElementsByTagName("node") counter = 1 for node in nodes: if(node.nodeType == 1): housenumber = "" street = "" postcode = "" city = "" osm_id = node.attributes["id"].value osm_version = node.attributes["version"].value latitude = node.attributes["lat"].value longitude = node.attributes["lon"].value
import csv from osmapi import OsmApi MyApi = OsmApi(username="******", password="******") MyApi.ChangesetCreate({u"comment": u"TPER import"}) with open("CM.csv") as cm_file: for row in csv.reader(cm_file, delimiter=";"): to_push = { "lon": row[7].replace(",", "."), "lat": row[6].replace(",", "."), "tag": { "addr:city": row[3].title(), "highway": "bus_stop", "ref": row[0], "name": row[1].title(), "operator": "TPER", "source": "http://www.tper.it/azienda/tper-open-data" } } print to_push MyApi.NodeCreate(to_push) MyApi.ChangesetClose()