рд╣рд╛рд▓ рд╣реА рдореЗрдВ,
Google рд╕реЗ рдПрдХ
рд╢рд╛рдВрдд рдорд╛рдирдЪрд┐рддреНрд░рдг рдкрд╣реЗрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдЖрдпрд╛ рдерд╛ред рд▓рдЧрднрдЧ 20 рдорд┐рдирдЯ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдмрд╣реБрднреБрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдкреГрд╖реНрда рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝рдиреЗ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ:
for (polyIdx=0;i<polys.length;polyIdx++){ var paths = polys[polyIdx].getPaths().getArray(); var arMultiPolygons=[]; for (j=0;j<paths.length;j++){ var arPolygons=[]; for (i=0;i<paths[j].length;i++) { arPolygons.push([paths[j].getArray()[i].lng(),paths[j].getArray()[i].lat()]); } arMultiPolygons.push(p) } }
polys
рдПрд░реЗ рдореЗрдВ - рд╕рднреА рдкреЙрд▓реАрдЧреЛрди рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рддрдм рдпрд╣ рд╕рд░рд▓ рд╣реИ - рдмрд╣реБрднреБрдЬ рдХреЗ рд╕рднреА рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╕рднреА
рдорд▓реНрдЯреАрдкреНрд▓рдЧреЙрди рд╣реИ ред рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЗрди рдмрд╣реБрднреБрдЬреЛрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╕рдорд╛рдзрд╛рди:
рд╕реЗрд▓реЗрдирд┐рдпрдо , рдЬреЛ рдЖрдкрдХреЛ js рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдзрд╛рд░ - рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрд╕реЗрд▓ + рдкреЛрд╕реНрдЯрдЧрд┐рд╕ред
from selenium import webdriver from shapely.geometry import polygon,multipolygon from shapely.wkt import loads import psycopg2 con = psycopg2.connect(database="WB",user='postgres',password='pass', host='127.0.0.1', port='5432') cur = con.cursor()
рдпрд╣рд╛рдВ рд╣рдордиреЗ рдЕрджреНрднреБрдд рдЖрдХрд╛рд░ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдЖрдкрдХреЛ рд╕реАрдзреЗ рд╣реА рдЕрдЬрдЧрд░ рдореЗрдВ рднреВ-рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдардВрдбрд╛ рд╣реЛрдиреЗ рдкрд░, рдЖрдзрд╛рд░ рд╕реЗ рдХреНрдпреЛрдВ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдХрд░реНрд╖ рдмреБрд░рд╛ рдерд╛ - рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдкрд╣рд▓рд╛ рдЕрдВрддрд░ рдЬрд┐рд╕рдиреЗ рдореЗрд░реА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рд╛, рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреЛрд╕реНрдЯ-рдЬреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдВрдЯреНрд░реЛрдЗрдб рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╣реБрднреБрдЬ рд╣реИрдВред рдФрд░ рдЬрдм рд╕реЗ рдореИрдВ рджреЗрд╢реЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
- рдПрдХ рдмрд╣реБрднреБрдЬ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдХреЗрдиреНрджреНрд░рдХ рдХреЛ рдЙрд╕рдореЗрдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рдЙрд╕ рджреЗрд╢ рдХрд╛ рдХреЗрдВрджреНрд░рдХ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рд╛рдордВрдЬрд╕реНрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡рд╣ рдмрд╣реБрднреБрдЬ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛)
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЙрд╕ рдЕрдиреБрдкрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреЛ рдмрд╣реБрднреБрдЬ рдХреА рд╕реАрдорд╛ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЛ рд╕реЗрдВрдЯреНрд░реЛ рд╕реЗ рдЬрд╝реВрдо рдЗрди / рдЖрдЙрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рдХрд╛рд░рдг рдкреИрдорд╛рдиреЗ рдореЗрдВ рд╡реГрджреНрдзрд┐ / рдХрдореА)
- рдХреНрд╖реЗрддреНрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛
рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд┐рд░реНрдл рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реБрдбреМрд▓ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рднреМрдЧреЛрд▓рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ (рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ)ред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рд╕рдорд╛рди, рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯрдЧрд┐рд╕ рдХреЛ рдмрдВрдзрди рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рдЖрдк рднреВрдЧреЛрд▓ рдХреЛ рднреВрдЧреЛрд▓ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдареАрдХ рд╣реИ, рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рджреЗрд╢реЛрдВ рдХреЗ рдмрд╣реБрднреБрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдХреГрддрд┐ рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдврдиреА рд╣реЛрдЧреА, рдЗрд╕реЗ рдкреЛрд╕реНрдЯрдЧрд┐рд╕ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдХреГрддрд┐рдпрд╛рдБ рдореИрдВрдиреЗ
рдпрд╣рд╛рдБ рд╕реЗ рд▓реА
рд╣реИрдВ ред рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреИрд╕реЗ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕реЗ рдмрд╣реБрдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдпреВрдЯреАрдПрдл -8 рдирд╣реАрдВ рд╣реИред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛ рд╣реБрдЖ рд╣реИ: рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
cur.execute("select idx,st_area(geography(st_setsrid(googlegeom,4326)))/1000000, " "st_astext(st_centroid(st_setsrid(googlegeom,4326))) " "from googlePolygons order by idx;") unRealC = cur.fetchall() cur.execute("select name, st_area(geography(st_setsrid(geom,4326)))/1000000, " "st_astext(st_centroid(st_setsrid(geom,4326))) from tm_world_borders;") realC = cur.fetchall() for urc in unRealC: for rc in realC: if float(abs(rc[1]-urc[1])) /rc[1]<0.02: browser.execute_script('pl = new google.maps.Polyline(' '{path: [new google.maps.LatLng('+str(loads(rc[2]).y)+','+ str(loads(rc[2]).x)+'),' ' new google.maps.LatLng('+str(loads(urc[2]).y)+','+ str(loads(urc[2]).x)+')],' 'map: map});')
рдореИрдВрдиреЗ
float(abs(rc[1]-urc[1])) /rc[1]<0.02
-
float(abs(rc[1]-urc[1])) /rc[1]<0.02
рддреНрд░реБрдЯрд┐] рд╕реЗрдЯ рдХрд┐рдпрд╛ред рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЬреЛ рдореВрд▓ рдмрд╣реБрднреБрдЬ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЛ рдЙрд╕рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
loads()
- рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП WKT рдХрдиреНрд╡рд░реНрдЯред
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ:
рдХреНрдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛: рдЧреНрд░реАрдирд▓реИрдВрдб, рджрдХреНрд╖рд┐рдг рдЕрдлреНрд░реАрдХрд╛, рдЖрдЗрд╕рд▓реИрдВрдб, рдерд╛рдИрд▓реИрдВрдбред рдЕрдкрдиреА рдбрд┐рд╕реНрдХ рдкрд░ рдкрд╛рдП рдЧрдП рдПрдХ рдФрд░ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЙрд╕реА 2% рдХреЗ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдЬреЛ рдХреЗрд╡рд▓ рджрдХреНрд╖рд┐рдг рдЕрдлреНрд░реАрдХрд╛ рдФрд░ рдерд╛рдИрд▓реИрдВрдб рдХреА рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рдереАред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реЗ, рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ Google рдХрд┐рд╕ рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЛ рдХрд┐рддрдирд╛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛: рдмрд╣реБрднреБрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреА рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝реЗрдВред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА Postgis рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ: рдЬреНрдпрд╛рдорд┐рддрд┐ рдХрд╛ рдПрдХ рдордЬрдмреВрдд рд╕рд░рд▓реАрдХрд░рдг, рдФрд░ рдлрд┐рд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реАрдорд╛ рдореЗрдВ рдХреЛрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ред