Daugiau

SRID klaida žemėlapių serveryje


Sukūriau tinklo topologiją naudodami QGIS, išsaugojau ją kaip shp, importavau ją į „PostGIS“ naudodama „shp2pgsql“ ir dabar bandau išvesti dalį geometrijos naudodami žemėlapių serverį.

Deja, žemėlapių serveris pateikia šią klaidą:

msDrawMap (): vaizdo apdorojimo klaida. Nepavyko nupiešti sluoksnio pavadinimu „ROUTE“. msPostGISLayerWhichShapes (): užklausos klaida. Klaida (KLAIDA: veikimas dviem geometrijomis su skirtingais SRID ) vykdant užklausą: pasirinkite kodavimą (AsBinary (force_collection (force_2d ("the_geom"))), 'NDR'), 'hex') kaip geom, "gid" iš (SELECT buildingroute.the_geom, buildingroute.gid FROM routetest INNER JOIN buildingroute ON routetest.toid = buildingroute.gid UŽSISAKYTI Routetest.id ASC) AS, kur the_geom && GeomFromText ('POLYGON ((( -22000000 -11000000, -22000000 11000000,22000000 11000000,22000000 -11000000, -22000000) '00 )

Dabar daug nežinau apie erdvinę nuorodą, bet nukopijavau nustatymus iš QGIS ir vis tiek gaunu tas klaidas. Štai šie QGIS nustatymai:

Mano sukurtą žemėlapių serverio failą galima rasti adresu http://pastie.org/2202322

Jei kas nors galėtų patarti, ką turėčiau pakeisti žemėlapių serverio faile, būčiau dėkingas ... Tikiuosi, kad ką tik suklydau projekcijos nustatymuose ...

Dėkoju!


Žemėlapio faile pabandykite pakeisti žemėlapio projekciją, kad ji būtų perskaityta iš epsg failo. Dabartinė žemėlapio projekcija nėra išsamus projekcijos aprašymas.

Taigi, o ne:

ŽEMĖLAPIO PAVADINIMO BŪSENA IMAGECOLOR 255 255 255 IMAGETYPE PNG PROJEKCIJA "proj = utm" "ellps = WGS84" "datum = WGS84" END

Naudoti:

Žemėlapio pavadinimo bandymo būsena IMAGECOLOR 255 255 255 IMAGETYPE PNG PROJECTION "init = epsg: 32709" END

Arba pateikite visą projekcijos aprašymą:

PROJEKCIJA "proj = utm" "ellps = WGS84" "atskaitos taškas = WGS84" "zona = 9" "vienetai = m" "pietūs" "no_defs" PABAIGA

Kadangi jūsų sluoksnis yra toje pačioje projekcijoje kaip ir žemėlapis, galite pašalinti projekciją iš sluoksnio apibrėžties - manoma, kad ji yra žemėlapio projekcijoje, jei nenurodyta kitaip.

PROJEKCIJA "init = epsg: 32709" PABAIGA

Geografiniai arba prognozuojami duomenys, pagrįsti SRID sistemoje „Oracle“

Fonas: Mano programoje reikia rodyti „Oracle“ saugomų erdvinių duomenų (geometrijos) MBR. Šiuo metu aš naudoju „Oracle“ funkciją SDO_AGGR_MBR (), tačiau ji veikia labai lėtai. Šiek tiek tyrinėdamas radau funkciją SDO_TUNE.EXTENT_OF (), kuri taip pat apskaičiuoja MBR ir yra daug greitesnė nei SDO_AGGR_MBR. Tačiau turi 2 problemas. Jis veikia tik su 2D duomenimis projekcijos koordinatėse. Norėdami pasinaudoti EXTENT_OF našumo pranašumais, nusprendžiau jį naudoti prognozuojamiems duomenims ir atsarginę skiltį SDO_AGGR_MBR geografiniams duomenims.

Problema: Pradėjau daryti prielaidą, kad visi duomenys, kurių SRID yra nuo 4000 iki 5000, yra geografiniai, tačiau tai nėra visiškai tiesa. Radau lentelę/rodinį pavadinimu MDSYS.CS_SRS, kuriame saugoma koordinačių sistemos informacija.

Aš planuoju rasti SRID naudodami užklausą:

ir tada naudodamiesi šiuo SRID pateikite užklausą MDSYS.CS_SRS, kad sužinotumėte, ar duomenys yra geografiniai, ar suplanuoti. Jis turi stulpelį pavadinimu WKTEXT, kurio eilutės prasideda PROJCS arba GEOGCS.

Galėčiau tai prototipuoti ir atrodo, kad tai veikia, bet esu visiškai įsitikinęs, kad tai yra teisingas požiūris. Aukščiau pateikta užklausa pateikia pirmosios duomenų eilutės SRID. Nežinau, ar SRID gali skirtis viename stulpelyje. Dar viena prielaida, kurią darau, yra tekstas WKTEXT stulpelyje. Turėsiu daug problemų, jei visais atvejais tai nebus PROJCS/GEOGCS ir jei vertės keisis tarp skirtingų „Oracle“ leidimų. Tiesą sakant, aš tik darau prielaidą, kad PROJCS reiškia projekciją CS, o GEOGCS - geografinę CS ir nesu tikras, ar tai teisinga.

Įdomu, ar yra lengvesnis būdas sužinoti, ar „Oracle DB“ erdviniai duomenys yra projekcijos, ar geografiniai.


Kas yra erdvinė atskaitos sistema?

Visi geometriniai objektai (trumpai - geometrijos), nesvarbu, ar jie yra taškai, linijiniai langeliai, ar daugiakampiai, egzistuoja vienoje erdvinėje atskaitos sistemoje. Tas pats pasakytina apie kolekcijų tipus. Visi geometrijos rinkinio, daugiataškio ir tt elementai turi būti toje pačioje SRS.

Naudokime pavyzdžiu tašką. Taškas turi X ir Y koordinates, tačiau tos koordinatės nieko nereiškia, nebent žinome, ar jos yra to paties paviršiaus koordinatės. Pvz., PUNKTAS (1 2) futbolo lauke už mano lango nėra tas pats, kas 1 punktas užrašų knygelės puslapyje. Futbolo laukas ir mano užrašų knygelė yra du skirtingi SRS, o du taškai nėra vienodi, net jei X ir Y koordinatės yra lygios. Kad jie būtų vienodi, jie taip pat turi būti tame pačiame SRS.

Kiekvienam SRS priskiriamas identifikatorius, erdvinės atskaitos sistemos identifikatorius (SRID). Kad du taškai sutaptų, turi sutapti ne tik X ir Y koordinatės, bet ir dviejų taškų SRID. Tiesą sakant, „MySQL“ ir kitos DBVS atsisako atlikti bet kokius skaičiavimus, nebent visi parametrai yra tame pačiame SRS, ty jei jie neturi to paties SRID.

SRID yra geometrijos vertės dalis. Pvz., Tašką su X ir Y koordinatėmis iš tikrųjų sudaro trys reikšmės: X reikšmė, Y vertė ir SRID reikšmė.

Norėdami rasti geometrijos SRID, galime naudoti funkciją ST_SRID:

Taip pat galime nustatyti geometrijos SRID naudodami ST_SRID (geometrija, naujas sridas) :

Svarbu pažymėti, kad tai nustato tik geometrijos SRID. Jis nekeičia jokių koordinačių.

Kurdami geometriją taip pat galime nurodyti SRID:

Pagal numatytuosius nustatymus, jei nenurodysime SRID, „MySQL“ sukurs geometrijas SRID 0. SRID 0 yra „MySQL“ ir#8217 abstrakčios, be vienetinės, begalinės, Katezijos plokštumos sąvoka. Nors visos kitos SRS nurodo tam tikrą paviršių ir nustato ašių vienetus, SRID 0 to nedaro.


Hfrhyu

Kodėl ugnis negali pakenkti Daeneriui, bet tai padarė Jonui Snow 1 sezone?

Ką reikėtų žinoti apie terminų logiką prieš studijuojant teiginių ir predikatų logiką?

Kodėl Jungtinės Karalystės parlamente tiek mažai pritariama stojimui į ELPA?

geoserver.catalog.FailedRequestError: Bandė pateikti GET užklausą http: // localhost: 8080/geoserver/workspaces.xml, bet gavo 404 būsenos kodą

Kaip dvigubas pilietis, mano JAV paso galiojimo laikas pasibaigs vieną dieną po kelionės į JAV. Ar tai veiks?

„Java HashMap“ gavimo metodo objekto tipo apribojimas

Ar pagrindinis muilo plovimo efektas atsiranda iš putų?

„Lie“ grupės reprezentacijų pašalinimas iš „Lie“ algebros reprezentacijų

Kodėl dabartiniai zondai tokie brangūs?

Ar žmogaus sukurtuose palydovuose turėtų būti protingas apverstas „karvių gaudytojas“?

Ar galiu nupjauti užburtos korėjos plaukus peiliu, pagamintu iš brangios medžiagos, kad nuimčiau tą medžiagą iš koridos?

Nurodo problemas nesiūlant sprendimų

Kuris sraigtasparnis turi daugiausiai rotorių menčių?

Ar gravitacinės bangos gali praeiti pro juodąją skylę?

Trumpa istorija apie astronautus, savo kūnu tręšiančius dirvą

Ar yra kanoninė ir atvirkštinė abelianizacija?

Izoperimetrinio tipo nelygybė kubo viduje

Atsitiktinis kūno maišymas kiekvieną vakarą ir ar mes vis dar galime veikti?

Kaip padaryti gyvūną, kuris gali veistis tik tam tikrą kartų skaičių?

Gaukite duomenis iš „Esri ArcGIS MapServer“ API

„Unicorn Meta Zoo#1“: kodėl dar vienas podcast'as? Problemos, susijusios su ESRI „JavaScript APILoad One Layer“ iš „ArcGIS Server MapServer“ Atsisiųskite duomenų rinkinį iš „ArcGIS REST Service“ apie atpažinimo pagrindu pagrįstą autentifikavimo saugumą errorQuery ArcGIS Server Map Service with 3857 SRID? ArcGIS REST “ …/MapServer? f = jsapi ” parametrai? Nepavyksta įkelti „MapService“ iš „ArcGIS Server“ „Javascript“ API

Iš šios API bandau gauti neseniai įvykusių žemės drebėjimų sąrašą su platuma ir ilguma: https://apps.pdc.org/msf/rest/services/global/pdc_active_hazards/MapServer/6

Negaliu pasikliauti serverio biblioteka, nes HTML puslapyje turiu naudoti tik „JavaScript“.

Mano problema ta, kad negaliu rasti įvykių, naršančių API, sąrašo

Iš šios API bandau gauti neseniai įvykusių žemės drebėjimų sąrašą su platuma ir ilguma: https://apps.pdc.org/msf/rest/services/global/pdc_active_hazards/MapServer/6

Negaliu pasikliauti serverio biblioteka, nes HTML puslapyje turiu naudoti tik „JavaScript“.

Mano problema ta, kad negaliu rasti įvykių, naršančių API, sąrašo

Iš šios API bandau gauti neseniai įvykusių žemės drebėjimų sąrašą su platuma ir ilguma: https://apps.pdc.org/msf/rest/services/global/pdc_active_hazards/MapServer/6

Negaliu pasikliauti serverio biblioteka, nes HTML puslapyje turiu naudoti tik „JavaScript“.

Mano problema ta, kad negaliu rasti įvykių, naršančių API, sąrašo

Iš šios API bandau gauti neseniai įvykusių žemės drebėjimų sąrašą su platuma ir ilguma: https://apps.pdc.org/msf/rest/services/global/pdc_active_hazards/MapServer/6

Negaliu pasikliauti serverio biblioteka, nes HTML puslapyje turiu naudoti tik „JavaScript“.

Mano problema ta, kad negaliu rasti įvykių, naršančių API, sąrašo


6 atsakymai 6

Norėdami patikslinti „synecdoche“ atsakymą, SRID kartais vadinamas „EPSG“ kodu. SRID/EPSG kodas yra defacto trumpinys, skirtas gerai žinomam projekcijų vaizdavimui.

Galite greitai ieškoti SRID lentelėje ir sužinoti, ar galite rasti tikslią ar panašią atitiktį:
SELECT srid, srtext, proj4text FROM spatial_ref_sys WHERE srtext ILIKE '%BLAH%'

Tokių dalykų taip pat galite ieškoti svetainėje spatialreference.org. Paieškos įrankis yra primityvus, todėl gali tekti naudoti „Google“ paiešką ir nurodyti svetainę, tačiau bet kokie rezultatai parodys ESRI PRJ turinį, „PostGIS SQL INSERT“ ir daugybę kitų pateikimų.

„Prj2EPSG“ yra nedidelė svetainė, skirta būtent šiai probleminei problemai įklijuoti į PRJ turinį, ir ji daro viską, kad surastų atitinkamą EPSG. Jie taip pat turi žiniatinklio paslaugų API. Tai nėra tikslus mokslas. Atrodo, kad jie naudoja Lucene ir EPSG duomenų bazę, kad atliktų atitikties teksto paieškas.

Atrodo, kad duomenys yra NAD83, kurio SRID yra 4269. Jūsų „PostGIS“ duomenų bazėje yra „spatial_ref_sys“ lentelė, kuri yra SRID peržiūros lentelė.

Jei duomenys atrodo tokie patys, kai SRID yra 4269 (NAD83) ir 4326 (WGS84), tada kažkas negerai.

Eikite ir atsisiųskite GDAL komunalines paslaugas, ogrinfo (kuri išspjautų informaciją apie projekciją) ir ogr2ogr komunalinės paslaugos yra neįkainojamos vertės.

Jamesas jau davė nuorodą į spatialreference.org. Tai padeda rasti erdvinės informacijos. Manau, kad rengdami „postgis“ egzempliorių įkėlėte „spatial_ref_sys.sql“.

Ir jei atvirai, nemanau, kad problema yra „PostGIS“ pusėje.

Aš paprastai laikau savo duomenis skirtinguose SRID savo „PostGIS“ duomenų bazėse. Tačiau man visada reikia projektuoti į išvesties SRS. Jūs rodote „OpenStreetMap“ iš anksto pateiktas plyteles, ir aš lažinuosi, kad jos nupieštos naudojant SRID 900913 („Google“ žemėlapio modifikuotą merkatoriaus projekciją, kurią dabar naudoja visi perteikti).

Mano rekomendacija jums yra:

1- Nustatykite tinkamą „OpenLayers“ kodo projekciją, atitinkančią bet kokias plyteles, iš kurių skaitote.

2. Duomenų bazėje saugokite bet kokį norimą SRID (žinoma, jei tai teisinga).

3.- Įsitikinkite, kad serveris, kurį naudojate vaizdams sugeneruoti iš jūsų duomenų („ArcGIS Server“, „Mapserver“, „GeoServer“ ar bet koks kitas), persikelia į tą patį SRS.


„InnoDB“ geografiniai indeksai

Viena iš pagrindinių „MySQL 8.0“ funkcijų yra geografijos palaikymas. Dabar „MySQL“ turi erdvinių nuorodų sistemų (SRS) katalogą, iš kurių beveik 500 yra geografinės. Dauguma funkcijų taip pat palaiko geografinius skaičiavimus. O indeksai?

„MySQL 8.0“ yra su „InnoDB“ geografinių duomenų erdviniais indeksais. Kadangi Dekarto ir geografinių duomenų skaičiavimai skiriasi, jų negalima maišyti tame pačiame indekse. Tiesą sakant, nėra prasmės indeksuoti duomenis daugiau nei viename to paties indekso SRS. Dėl šios priežasties „MySQL“ buvo išplėsta taip, kad palaikytų SRID apribojimus geometrijos stulpelių apibrėžimuose.


„TinyOWS“ elementas¶

„TinyOWS“ yra pagrindinis elementas. Jis yra privalomas ir jame turi būti tam tikros sistemos informacijos apie pačią paslaugą. Kai kurios pasaulinės paslaugos parinktys taip pat gali būti įjungtos arba išjungtos šiame lygyje.

URL, kuriame yra paslauga, pvz., Http://127.0.0.1/cgi-bin/tinyows

Kelias, kuriame yra „TinyOWS“ schemos vadovas, pvz .:/usr/local/tinyows/schema/

Kelias, kuriame „TinyOWS“ registruoja įvesties užklausas. pvz .: /var/log/tinyows.log. Šį failą turi rašyti vartotojas, kuriam priklauso „TinyOWS“ procesas.

Bitų lauko reikšmė, nurodanti, ką registruoti: 1: KLAIDA, 2: ĮVYKIS, 4: HTTP KLAUSIMAS, 8: SQL. pvz.: 15, kad užregistruotumėte viską.

Nurodykite dešimtainio tikslumo skaitmenų skaičių, kai koordinatės išreikštos platuma/ilguma.

Nurodykite, kiek dešimtainio tikslumo skaitmenų naudoti, kai projektuojamos koordinatės (taigi skaitiklio vienetas).

Pažymėkite, ar WFS GML „GetFeature“ išėjimui reikia apskaičiuoti ribojimo langelį. Tai privaloma WFS specifikacijoje. Tačiau kadangi tai užima daug laiko, gali būti įdomu jį išjungti.

Pažymėkite, ar „TinyOWS“ turėtų naudoti įvertintą_ekstentą (greičiau, bet šiek tiek mažiau tiksliai).

Pažymėkite, ar įvesties duomenys turi būti patikrinti prieš schemą prieš juos vykdant. Atsargiai, schemos patvirtinimas yra svarbi saugumo dalis. Išjunkite šį atributą rizikuodami.

Pažymėkite, ar prieš atliekant operaciją reikia atlikti OGC SFS 1.1 geometrijos patvirtinimą.

Išvesties kodavimas. Kitos vertės gali būti, pavyzdžiui, ISO-8859-1. Duomenims, kurie šis atributas yra deklaratyvus, kodavimo konversija neatliekama.

Pažymėkite, kad nurodytų, ar „TinyOWS“ turėtų parodyti PK schemoje (taigi reikalauti jų operacijų užklausoje).

Eilutės versija, nurodanti numatytąją WFS versiją, pavyzdžiui, 1.0.0 arba 1.1.0.

Ribų elementas¶

„Limits Element“ suteikia maksimalų serverio išvestį. Tai gali padėti užkirsti kelią serverio gedimui, kai neleidžiama atakuoti paslaugos ar neįprastai didelė vartotojo užklausa. Šis elementas neprivalomas.

Naudokite norėdami nustatyti maksimalų WFS klientui grąžintų funkcijų skaičių pagal „GetFeature“ užklausą

Geografinės ribos „bbox“, naudojama maksimaliai apimčiai nurodyti: rytų, vakarų, šiaurės, pietų


Geografinių ypatybių saugojimas naudojant erdvinius duomenis

Erdviniai duomenys, kaip paaiškinta „MySQL“ nuorodoje, yra geometriniai duomenys, apibrėžti kaip & kvotos taškas arba taškų visuma & quot, atstovaujanti bet kuriai pasaulio vietai.

Atviras geografinis erdvinis konsorciumas (OGC) paskelbia standartų rinkinį su etikete „Geospatial Information and Standards“ („OpenGIS“). „OpenGIS“ geometrijos modelis apibrėžia skirtingus erdvinių duomenų geometrijos tipus.

Kitoks geometrijos tipai yra abstraktus erdvinių duomenų modeliavimo pagrindas. Be to, erdvinėje duomenų bazėje susiduriame su keliomis pagrindinėmis techninėmis sąvokomis:

  • Geometrinės funkcijos, skirtos manipuliuoti erdviniais duomenimis ir konvertuoti tarp tekstinių ir vidinių vaizdų.
  • Geometrinės funkcijos, skirtos apskaičiuoti erdvinius ryšius tarp skirtingų geografinių požymių.
  • Erdvinis indeksavimas, skirtas patobulinti prieigą prie erdvinių stulpelių.

Visa tai tarnauja modeliuoti, apdoroti ir palyginti geometriją geografinių ypatybių.

Geografinės ypatybės, apibrėžimas

Geografinės ypatybės apibūdina subjektai, kurie turi fizinę vietą realiame pasaulyje. Remiantis „MySQL“ nuoroda, geografinė ypatybė gali būti:

  • Subjektas. Pavyzdžiui, kalnas, tvenkinys, miestas.
  • Erdvė. Pavyzdžiui, miesto rajonas, tropikai.
  • Apibrėžta vieta. Pavyzdžiui, sankryža, kaip tam tikra vieta, kur susikerta dvi gatvės.

Realiame pasaulyje egzistuoja geografinė ypatybė. Norėdami apibūdinti tai erdvinių duomenų požiūriu, naudojame geometrinius objektus. „OpenGIS“ geometrijos modelis apibrėžia dvi pagrindines geometrinių objektų hierarchijas.

Paprasti geometriniai objektai

Kiekvienas paprastas geometrinis objektas apibrėžia a viena geografinė savybė:

Taip pat yra visiškai abstraktus geometrinio objekto „Geometry“ tipas, kuris gali reikšti bet kurį kitą geometrijos tipą.

Sudėtiniai geometriniai objektai

Kiekvienas sudėtinis geometrinis objektas apibrėžia a funkcijų kolekcija. Pagal specifikaciją galimi šie sudėtiniai geometriniai objektai:

Analogiškai abstrakčiam geometrijos geometrijos tipui yra atitinkamas „GeometryCollection“ sudėtinis geometrinis objektas. Tai gali reikšti bet kurį kitą sudėtinį geometrinį objektą.

Koordinuoti atskaitos sistemas

Geometrinį objektą sudaro erdvės taškai. Norint įtvirtinti geografinį objektą realiame pasaulyje, atitinkamas geometrinis objektas turi būti susietas su žinoma koordinačių atskaitos sistema. Tokia sistema taip pat paprastai vadinama & quotspatial atskaitos sistema & quot. Tik tada, kai žinomos dviejų geometrinių objektų koordinačių atskaitos sistemos, galime samprotauti apie erdvinius dviejų objektų santykius.

SRID apibūdinimas Vienetas
4326 GPS palydovinė navigacijos sistema taip pat naudojama NATO kariniams geodeziniams tyrimams. laipsnių
3857 Žiniatinklio žemėlapių kūrimo ir vizualizavimo programos: „Google“ žemėlapiai, „Open Street Maps“ ir kt. metrų


PHP su „MySQL“

Iki 5.7 versijos „MySQL“ palaikė mažiau nei žvaigždžių geografinės informacijos sistemos (GIS). 5.7 versijoje buvo pridėtos dviejų matmenų arba 2D bibliotekos „Boost.Geometry“. O su 8.0 atsirado trijų matmenų arba 3D bibliotekos. Bet kaip jūs naudojate šias funkcijas?

Iš anksto norėčiau pareikšti, kad tai man yra nauja ir tai yra mano bandymas dokumentuoti, ko reikia norint pereiti nuo nulinių žinių apie GIS prie kažko, tikiuosi, geresnio. Kaip pratimą noriu padaryti atstumą tarp dviejų vietų nuo jų ilgumos ir platumos, tarkime, du miestus netoli mano gyvenamosios vietos. Taigi, ką turime padaryti, kad tai pasiektume?

Iš tikrųjų lengva naudotis teikiamomis funkcijomis, jei turime ilgumą ir platumą SRID 4326 formatu.

SELECT ST_Distance (
(PASIRINKITE vietą iš miestų WHERE name = 'Trondheim'),
(PASIRINKITE vietą iš miestų WHERE name = 'San Francisco')
) AS distance_in_meters

Gerai, bet kas yra SRID 4326 formatas, kur juos gauti ir kaip gauti duomenis į tą formatą? Taigi įsigilinkime giliau.

Turiu padėkoti Norvaldui Ryengui, kuris yra vyresnysis „Oracle“ programinės įrangos vadybininkas, už tą užklausą, kurią maždaug perkeliau iš jo „MySQL GIS 8.0“ apžvalgos.

„Harrison's Clocks“ buvo pirmasis sėkmingas, kurį Karališkasis jūrų laivynas naudojo navigacijai, ir jį galima pamatyti Karališkojoje observatorijoje, Grinviče, Jungtinėje Karalystėje. Labai įdomi istorija apie žmogų, kuris tuo metu buvo pažangiausias savo technologijoje, kuriam teko įveikti tiek daug techninių ir politinių problemų.

Geometrijos klasė: fonas

Geometriniai duomenys saugomi pagal geometrijos duomenų tipą. Kiekviena geometrija turi tipą, SRID, koordinates ir kai kuriuos kitus atributus, kurie kol kas bus ignoruojami. Ir mes daugiausia susidursime su POINT klase. Pagalvokite apie tašką kaip apie vietą žemėlapyje. Praleisime CURVE, LineString, Surface, Polygons, GeometryCollection, MultiPoint, MultiCurve, MultiLineString, MultiSurface ir MultiPolygon.

Stulpeliai su erdvinių duomenų tipu turi SRID atributą, nurodantį erdvinės atskaitos sistemą arba SRS, naudojamą duomenims tame stulpelyje saugoti. Yra SRS, skirtos Žemės rutulio projektavimui ant plokščio paviršiaus (pagalvokite apie pasaulio „Mercator“ projekcijos žemėlapius), neprognozuotus, vaizduojančius elipsės ilgumą ir platumą. „MySQL“ SRID reikšmė 0 reiškia begalinę plokščią Dekarto plokštumą be ašims priskirtų vienetų ir yra numatytoji. Dabar grupė, pavadinta Europos naftos tyrimų grupe, turi savo sistemą, kurios vertė yra 4326, kurią pamatysite vėliau.

Koordinatės pateikiamos kaip dvigubo tikslumo (8 baitų) skaičiai. Šios skaičių poros yra plokščios (plokščios) arba geodezinės (pagalvokite apie Žemės paviršių), ir tos pačios poros vertės iš vienos sistemos gali labai skirtis nuo kitos.

Aukščiau pateiktoje užklausoje naudojome stulpelį pavadinimu lok kaip taškas, kuriame buvo miestai. Išsamią informaciją galite pamatyti puikiosiose Norvaldo skaidrėse arba patikėti, kad šios užklausos buvo naudojamos stulpelyje, apibrėžtame kaip loc POINT SRID 4326 NOT NULL dabar.

Įterpti į miestus (pavadinimas, vieta) VALUES (
„Trondheimas“,
ST_GeomFromText ('POINT (64.43048320193547 10.394972698312927)', 4326)
)
Įterpti į miestus (pavadinimas, vieta) VALUES (
'San Franciskas',
ST_GeomFromText ('POINT (37.272615666666667 -122.4425455194445)', 4326)
)

Dabar Vikipedija sako, kad Trondheimo temperatūra yra 63 laipsnių 25 "47'N ir 10 laipsnių 23" 36'E, o tai atrodo gana arti aukščiau pateiktų skaičių. O Nidaros katedra yra nurodyta 63,4305 laipsnių šiaurės platumos ir 10,3951 laipsnių rytų ilgumos. Taigi sakydamas POINT („platuma“ „ilguma“), atrodo, yra tai, ko aš ieškau norėdamas nurodyti vietą.

Norėdami nulupti kitą svogūno sluoksnį, pažvelkime, ką daro ST_GeomFromText (). Taigi valstybės teigia, kad ST_GeomFromText 'Sukuria bet kokio tipo geometrijos vertę, naudodama savo WKT atvaizdavimą ir SRID.'

Gerai, tai nieko neišaiškino. Taigi, kas gi yra WKT atstovybė? „MySQL“ vadove yra skyrius Funkcijos, sukuriančios geometrines vertes iš WKT verčių. Gerai žinomo teksto (WKT) geometrijos reikšmių atvaizdavimas skirtas keistis geometrijos duomenimis ASCII forma. „OpenGIS“ specifikacijoje pateikiama „Backus-Naur“ gramatika, nurodanti oficialias WKT reikšmių rašymo gamybos taisykles. Taigi „15 20 PUNKTAS“ yra WKT.

Tai darosi ne lengviau, ar ne? Ir mes vis dar nežinome, kaip gauti atstumą tarp dviejų ilgumos ir platumos rinkinių.

Kai kurių duomenų gavimas

Man pavyko rasti labai gražų JAV pašto kodų (pašto kodų) sąrašą adresu https://gist.github.com/erichurst/7882666/ ir naudoti lentelę „MySQL Workbench“ duomenų importavimo agentas. Tiesiog trys stulpeliai ZIP pašto kodui, LAT platumai ir SGD ilgumai. Aš išsaugojau ZIP failą kaip TEKSTĄ (pirmieji nuliai, kurie yra reikšmingi, išnyksta, jei INT stulpelis), o kitus du laukus - kaip REAL. Ir yra 33 144 duomenų eilutės.

Pažvelkime į atstumą tarp nuostabių Justino ir Trophy Club miestų, abu Teksaso valstijoje. Justinas yra pašto kodas 76247, o „Trophy Club“ - 76262

mysql & gt pasirinkite * iš duomenų, kuriuose yra ZIP (76247, 76262)
+-------+-----------+------------+
| ZIP | LAT | SGD | +-------+-----------+------------+
| 76247 | 33.099993 | -97.340499 |
| 76262 | 33.009335 | -97.22672 | +-------+-----------+------------+
2 eilutės rinkinyje (0,03 sek.)

Ir pabandykime užklausą.


mysql & gt select
st_distance (
st_geomfromtext ('taškas (33.099993–97.34099) “, 4326),
st_geomfromtext ('taškas (33.009335 -97.22672)', 4326)
) kaip atstumas

+--------------------+

| atstumas |
+--------------------+
| 14662.554615102901 |
+--------------------+
1 eilutė rinkinyje (0,00 sek.)


Taigi tarp Justino ir „Trophy Club“ miestų yra maždaug 15 000 metrų. Ir atkreipkite dėmesį, kad tai yra plokščias modelis, kuris neatitinka žemės kreivumo. Bet mes galime tai pasiekti pakankamai lengvai naudodami ST_Distance_Sphere.

mysql & gt pasirinkite st_distance_sphere(
st_geomfromtext ('taškas (33.099993–97.34099) “, 4326),
st_geomfromtext ('taškas (33.009335 -97.22672), 4326))

kaip sfera,
st_distance(

st_geomfromtext ('taškas (33.099993–97.34099) “, 4326),
st_geomfromtext ('taškas (33.009335 -97.22672)', 4326))

kaip plokščias
+--------------------+--------------------+
| sfera | plokščias |
+--------------------+--------------------+
| 14664.184945803418 | 14662.554615102901 |
+--------------------+--------------------+
1 eilutė rinkinyje (0,00 sek.)


Taigi net gana plokščiame Šiaurės Teksaso rajone yra tam tikras skirtumas tarp sferinio ir plokščio pasaulio.


Kaip SRID naudojami „ArcGIS“

Šioje lentelėje išvardyta, koks SRID naudojamas tikslinėje „PostgreSQL“, „Oracle“ ar „SQL Server“ duomenų bazėje importuojant ar įklijuojant erdvinius duomenis. Žodžiai žinomi arba nežinomi rodo, ar šaltinio duomenų erdvinė nuoroda gali būti susieta su esama tikslinės duomenų bazės erdvine nuoroda.

Žinomas EPSG kodas su ST_Geometry, SDEBINARY, PostGIS geometrija, PostGIS geografija, SDO_Geometry, SQL Server geometrija arba SQL Server geografijos stulpeliu

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija. Tai galioja tik galiojančiai geografinei koordinačių sistemai, nes „PostGIS“ geografija nepalaiko suplanuotų koordinačių sistemų.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

Žinomas EPSG kodas su pasirinktine tolerancija ir (arba) tikslumu su ST_Geometry arba SDEBINARY stulpeliu

Į geografinių duomenų bazių lentelę įtraukiamas didesnis nei 300 000 SRID.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija. Tai galioja tik galiojančiai geografinei koordinačių sistemai, nes „PostGIS“ geografija nepalaiko suplanuotų koordinačių sistemų.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija. Tai pasakytina tik apie geografines koordinačių sistemas, nes projektuojamos koordinačių sistemos nepalaikomos.

Žinoma Esri koordinačių sistema su ST_Geometry arba SDEBINARY stulpeliu

Esri kodas naudojamas ID ir saugomas kartu su geometrija.

Pateikiama klaida ir duomenų importuoti negalima.

Esri kodas naudojamas ID ir saugomas kartu su geometrija.

Projektuojamoms koordinačių sistemoms naudojamos Esri koordinačių sistemos. Kadangi suprojektuotos koordinačių sistemos negali būti naudojamos su SQL serverio geografijos tipu, grąžinama klaida ir duomenų importuoti negalima.

Nežinoma koordinačių sistema su ST_Geometry, SDEBINARY, PostGIS geometry, SDO_Geometry arba SQL Server geometry stulpeliu

Į geografinių duomenų bazių lentelę įtraukiamas didesnis nei 300 000 SRID.

Pateikiama klaida ir duomenų importuoti negalima.

Pateikiama klaida ir duomenų importuoti negalima.

Individualizuota „Oracle“ koordinačių sistema su stulpeliu SDO_Geometry

Į geografinių duomenų bazių lentelę įtraukiamas didesnis nei 300 000 SRID.

Pateikiama klaida ir duomenų importuoti negalima.

Tinkintas „Oracle“ ID naudojamas, jei jis nustatytas šaltinyje. Jei nenustatyta, tikslinėje duomenų bazėje SRID nustatomas kaip nulis.

Pateikiama klaida ir duomenų importuoti negalima.

Individualizuota koordinačių sistema su PostGIS geometrijos stulpeliu

Į geografinių duomenų bazių lentelę įtraukiamas didesnis nei 300 000 SRID.

Naudojamas pasirinktinis „PostGIS“ ID, jei jis nustatytas šaltinyje. Jei nenustatyta, grąžinama klaida ir duomenų importuoti negalima.

Naudojamas pasirinktinis „PostGIS“ ID, jei jis nustatytas šaltinyje. Jei nenustatyta, tikslinėje duomenų bazėje ID nustatomas į –1.

Pateikiama klaida ir duomenų importuoti negalima.

Įklijuojant ar importuojant duomenis į „Db2“ ar „Informix“ duomenų bazę, „ArcGIS“ taip pat patikrina erdvinių nuorodų lentelę, ar neatitinka jos, o erdvinių nuorodų lentelėje pridedamas naujas įrašas su nauja informacija. Daugiau informacijos apie naudojamus ID rasite IBM dokumentacijoje.


Kaip SRID naudojami „ArcGIS“

Šioje lentelėje išvardyta, koks SRID naudojamas tikslinėje „PostgreSQL“, „Oracle“, „SQL Server“ ar „Netezza“ duomenų bazėje importuojant ar įklijuojant erdvinius duomenis. Žodžiai žinomi arba nežinomi rodo, ar šaltinio duomenų erdvinė nuoroda gali būti susieta su esama tikslinės duomenų bazės erdvine nuoroda.

Žinomas EPSG kodas su ST_Geometry, SDEBINARY, PostGIS Geometry, SDO_Geometry, SQL Server Geometry, SQL Server Geography arba Netezza erdviniu stulpeliu

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

Žinomas EPSG kodas su pasirinktine tolerancija ir (arba) tikslumu naudojant ST_Geometry, SDEBINARY arba Netezza erdvinį stulpelį

Į „ArcSDE“ sistemos lentelę įtrauktas didesnis nei 300 000 SRID.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

EPSG kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

Žinoma Esri koordinačių sistema su ST_Geometry, SDEBINARY arba Netezza erdviniu stulpeliu

Esri kodas naudojamas ID ir saugomas kartu su geometrija.

Esri kodas naudojamas ID ir saugomas kartu su geometrija.

Projektuojamoms koordinačių sistemoms naudojamos Esri koordinačių sistemos. Kadangi suprojektuotos koordinačių sistemos negali būti naudojamos su SQL serverio geografijos tipu, grąžinama klaida ir duomenų negalima importuoti.

Esri kodas naudojamas kaip erdvinis atskaitos ID ir saugomas kartu su geometrija.

Nežinoma koordinačių sistema su ST_Geometry, SDEBINARY, PostGIS Geometry, SDO_Geometry, SQL Server Geometry arba Netezza erdviniu stulpeliu

Prie „ArcSDE“ sistemos lentelės pridedamas didesnis nei 300 000 SRID.

Pateikiama klaida ir duomenų importuoti negalima.

Individualizuota „Oracle“ koordinačių sistema su stulpeliu SDO_Geometry

Prie „ArcSDE“ sistemos lentelės pridedamas didesnis nei 300 000 SRID.

Tinkintas „Oracle“ ID naudojamas, jei jis nustatytas šaltinyje. Jei nenustatyta, tikslinėje duomenų bazėje SRID nustatomas kaip nulis.

Pateikiama klaida ir duomenų importuoti negalima.

Pateikiama klaida ir duomenų importuoti negalima.

Individualizuota koordinačių sistema su „PostGIS Geometry“ stulpeliu

Prie „ArcSDE“ sistemos lentelės pridedamas didesnis nei 300 000 SRID.

Naudojamas pasirinktinis „PostGIS“ ID, jei jis nustatytas šaltinyje. Jei nenustatytas, tikslinėje duomenų bazėje ID nustatomas į –1.

Pateikiama klaida ir duomenų importuoti negalima.

Pateikiama klaida ir duomenų importuoti negalima.

Įklijuojant ar importuojant duomenis į DB2 arba „Informix“ duomenų bazę, „ArcGIS“ taip pat patikrina erdvinių nuorodų lentelę, ar neatitinka jos, o erdvinių nuorodų lentelėje pridedamas naujas įrašas su nauja informacija. Daugiau informacijos apie naudojamus ID rasite IBM dokumentacijoje.