QGIS Gazetteer-query zonder gegevens aan canvas toe te voegen

Ik heb een PostGIS-database met 30 miljoen gazetteerpunten, elk met een X Y-coördinaat. Ik wil hiernaar vragen en dan de kaart zoomen naar de locatie. Ik wil de gegevens echter niet aan het project toevoegen omdat het voor eeuwig duurt om 30 miljoen punten te laden.

Ik ben begonnen met het maken van mijn eigen QGIS-plug-in, maar alle tutorials die ik heb gezien lijken vectorgegevens eerst direct aan het kaartdoek toe te voegen.

Pseudo-code:

Click button
Dialogue Box 
Enter PostGIS database connection fields (host, dbname, user, password)
Enter gazetteer value
Finds match
Zooms and centers on point.

Als iemand een beter idee heeft of een plug-in kent, zou dat erg handig zijn

5
Tim, hoe gaat het met dit project? Ik ben geïnteresseerd om meer te horen en ik ben na het schrijven van een soortgelijke plugin mezelf.
toegevoegd de auteur andresc, de bron

3 antwoord

Redelijk gemakkelijk :) De ZoomToPoint-plug-in kan je laten zien hoe je de helft hiervan kunt doen - je roept eigenlijk mapCanvas.setExtent (rect) waarbij rect een QgsRhoek is van het gebied waarop moet worden ingezoomd.

Om het gebied te krijgen, voert u gewoon een Postgis-query uit en krijgt u het resultaat terug ... Makkelijker gezegd dan gedaan ... waarschijnlijk moet psycopg2 voor dit bit worden gebruikt, tenzij ergens in Qgis een databaseonafhankelijke interface aanwezig is ...

Een andere gedachte is dat u een VIEW op uw query kunt maken en dat dit het selectiekader (pas op als er maar één punt in uw query is) als één polygoon met enkele PostGIS-geometrieconversies retourneert. Laad dat vervolgens als een laag (het zal slechts één polygoon zijn, geen miljoenen punten), dan van zoom naar laag (van de Python API) en dan de laag verwijderen.

Ik hoop dat het helpt. Bekijk enkele van de SQL-gerelateerde plug-ins.

1
toegevoegd

Wanneer u in het dialoogvenster "Postgis-lagen toevoegen" klikt en nadat u op "Verbinden" hebt geklikt, kunt u een van de tabellen selecteren en een query invoeren (kolom "sql") en zo filteren wat u nodig hebt voordat u het aan het canvas toevoegt.

0
toegevoegd
Hallo Giovanni Ik heb dat gezien en het in het verleden gebruikt. Ik wil echter niet dat er echte gegevens op de kaart worden geladen, maar ik zou de kaart graag op de locatie willen oriënteren.
toegevoegd de auteur parkerfath, de bron

Als iemand hier nog steeds naar op zoek is, zou ik willen voorstellen om een ​​kijkje te nemen naar de gazetteer-plugin ontwikkeld door @Nathan W op https://github.com/AstunTechnology/QGIS-Gazetteer-Plugin . Het kan wat aanpassingen vereisen om verbinding te maken met een database, maar de rest van de gewenste functionaliteit is er.

0
toegevoegd