Permalänk
Medlem

Val av DBRMS för geo-data

Hej SweClockers,

Idag kommer jag med mer än bara en fråga om hur man gör något – nu är det dags att rådfråga om val av DBRMS. Jag kommer i databasen spara addresser, persondata, produkter med mera. Nu är jag i det stadie att jag vill implementera geosökning för att kunna hitta avstånd från en punkt till, bland annat, de olika addresserna. Det lättaste skulle självklart vara att bara spara latitud och longitud i decimal eller varchar, hämta alla entries och sedan låta Google Maps API avgöra vilka punkter som är in range. Detta blir ju dock rätt uppenbart väldigt ineffektivt. Därför vill jag kunna filtrera ut platser baserat på avstånd från en viss punkt direkt i databasen, något jag efter en del läsning förstått borde gå att göra om man nyttjar spatial data types, POINT i MySQL då.

Till sist kommer då frågan: vilket DBRMS skulle ni ha valt för detta ändamål? Ändamålet är alltså avståndssökningar i databasen. helst open source/gratis i kommersiellt syfte, men har ni några andra jättebra förslag nämn gärna dem så får jag ta upp det med kund.

MVH
Leo

Visa signatur

Citera för svar!|Fraktfritt hos INET|Min hemsida
Fractal Design Define R3|Corsair AX 850W|Gigabyte Nvidia GeForce GTX 570|Corsair Vengeance 1600MHz 2x4GB|ASRock P67 Extreme4|Intel Core i5 2500K|2x Samsung Spinpoint F3 1TB|Samsung Blu-Ray läsare
Nikon D7000|Nikon 60mm macro|Nikon 18-70|Nikon 55-300|Nikon 10.5 Fisheye

Permalänk
Skrivet av phroggyy:

hitta avstånd från en punkt till, bland annat, de olika addresserna.

Citat:

avgöra vilka punkter som är in range.

Det här är egentligen två olika uppgifter. "Räkna ut avstånd mellan två punkter" får ingen nämnvärd prestandaskjuts av en databasmotor med GIS-stöd och är hyggligt enkelt att implementera själv. Filtrera poster vars geokoordinater ligger inom en polygon eller på ett visst avstånd från en annan punkt kan få prestandaförbättringar.

Om du i stället är intresserad av att i så hög grad som möjligt utnyttja features i databasmotorn för att t ex minska mängden applikationskod eller kompensera för en snedfördelning i hårdvaruprestanda (fläskig databasserver, klen applikationsserver)) blir förstås situationen en annan, men svaret behöver ändå inte nödvändigtvis vara GIS-tillägg till databasmotorn.

Citat:

Till sist kommer då frågan: vilket DBRMS skulle ni ha valt för detta ändamål?

Mer information krävs. Vilken precision krävs? Måste applikationen fungera i hela universum, på hela jordklotet eller inom ett begränsat område? Vilket koordinatsystem är punkterna lagrade i?

Permalänk
Medlem

Det beror såklart på hur er milljö ser ut.

Jag kör SQL Server 2014 med 100-tals miljoner polygoner i, funkar finfint. SQL Server har fått mycket bättre stöd för spatiala typer de senaste versionerna.

Annars är postgis ett populärt alternativ, det är postgresql med gis-tillägg. Postgis är också opensource.

När det kommer till att hitta avstånd etc så har båda dessa system stöd för spatiala funktioner men du vill då kolla upp specifikationerna så du väljer en som har stöd för allt du behöver.

Du behöver specificera mer om när, var och hur du vill räkna ut t.ex. avståndet; räcker det att räkna ut det en gång och spara resultatet i tabellen eller ändras det så att du måste räkna ut det on-the-fly? Går det att förgenerera alla möjliga resultat och spara det?

Det är många saker ni måste tänka på men valet av DBMS påverkas mer av vilken miljö ni kör. De spatiala beräkningarna går alltid att lösa i efterhand. Jag behövde t.ex. bygga funktioner för att projicera om mellan olika ellipsoider för att SQL Server inte kunde det.

Visa signatur

awesome arch