Încărcarea unui layer în QGIS din conexiune Oracle

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Încărcarea unui layer în QGIS din conexiune Oracle

Rusu
Salut,
 

 Mă poate asista/direcționa cineva către documentație pentru a încărca date dintr-un tabel Oracle într-o sesiune QGIS programatic, folosind linia de comandă Pyhton?
 

 Am o conexiune către o DB Oracle, folosind TNS/alias de rețea, care conține peste 14.000 de tabele, iar pentru adăugarea oricărui tabel folosind interfața grafică trebuie să aștept ca mai întâi QGIS să "citească" toate tabelele și durează foarte mult. Sper să se poată acoli această operațiune de "database read" încărcând direct tabelul din bază ca layer QGIS.
 

 Din ce am citit pare că se pot folosi câteva comenzi python pentru adăugarea tabelului. Exemplul de mai jos este luat de pe pagina de documentație pentru adăugarea unui tabel dintr-o tabelă PostgreSQL/PostGIS:

 uri = QgsDataSourceUri()
uri.setConnection("localhost", "5432", "dbname", "johny", "xxx")
uri.setDataSource("public", "roads", "the_geom", "cityid = 2643")
vlayer = QgsVectorLayer(uri.uri(False), "layer name you like", "postgres")

 

 A avut cineva noroc în direcția aceasta?

Reply | Threaded
Open this post in threaded view
|

Re: Încărcarea unui layer în QGIS din conexiune Oracle

Suns_M
Salut, 
Momentan nu pot testa, dar pe gis.stackexchange s-a menționat cx_Oracle, este și un exemplu de script:* https://gis.stackexchange.com/questions/131000/loading-oracle-spatial-layers-in-standalone-python-qgis?noredirect=1* https://datatofish.com/how-to-connect-python-to-an-oracle-database-using-cx_oracle/* https://cx-oracle.readthedocs.io/en/latest/installation.html#quick-start-cx-oracle-installation
Spor, seară faină 😊
Cristina Mavriche.

    On Wednesday, January 23, 2019, 5:05:14 PM GMT+2, [hidden email] [geo-spatial] <[hidden email]> wrote:  
 
    

Salut,
Mă poate asista/direcționa cineva către documentație pentru a încărca date dintr-un tabel Oracle într-o sesiune QGIS programatic, folosind linia de comandă Pyhton?
Am o conexiune către o DB Oracle, folosind TNS/alias de rețea, care conține peste 14.000 de tabele, iar pentru adăugarea oricărui tabel folosind interfața grafică trebuie să aștept ca mai întâi QGIS să "citească" toate tabelele și durează foarte mult. Sper să se poată acoli această operațiune de "database read" încărcând direct tabelul din bază ca layer QGIS.
Din ce am citit pare că se pot folosi câteva comenzi python pentru adăugarea tabelului. Exemplul de mai jos este luat de pe pagina de documentație pentru adăugarea unui tabel dintr-o tabelă PostgreSQL/PostGIS:
uri = QgsDataSourceUri()
uri.setConnection("localhost", "5432", "dbname", "johny", "xxx")
uri.setDataSource("public", "roads", "the_geom", "cityid = 2643")
vlayer = QgsVectorLayer(uri.uri(False), "layer name you like", "postgres")




A avut cineva noroc în direcția aceasta?

   
Reply | Threaded
Open this post in threaded view
|

Re: Încărcarea unui layer în QGIS din conexiune Oracle

Rusu
Bună Cristina,

 

 Mulțumesc frumos pentru info..e un punct bun de plecare, deși se referă mai mult la QGIS 2.x care avea implementat Python 2.x și QT4, dar ar trebui să nu fie super complicat de transpus pentru QGIS 3.x cu python 3.x și QT5. Doar niște trial-and-error.
 

 Ca alternativă la ce am menționat, se poate utiliza interfața SQL din DB Manager din QGIS încât să scrii un query SQL, inclusiv pentru realizarea de view-uri. Aceste tabele/view-uri se pot apoi adăuga ca layer în hartă ca și QUERY_LAYERS, iar partea frumoasă este că nu trebuie să aștepți să citești toată baza de date ci trebuie doar să aștepți executarea sintaxei de SELECT.

 

Reply | Threaded
Open this post in threaded view
|

Re: Încărcarea unui layer în QGIS din conexiune Oracle

Suns_M
Da, e o soluție bună. Week-end fain 😊

Sent from Yahoo Mail on Android
 
  On Fri, Jan 25, 2019 at 2:37 PM, [hidden email] [geo-spatial]<[hidden email]> wrote:      

Bună Cristina,

Mulțumesc frumos pentru info..e un punct bun de plecare, deși se referă mai mult la QGIS 2.x care avea implementat Python 2.x și QT4, dar ar trebui să nu fie super complicat de transpus pentru QGIS 3.x cu python 3.x și QT5. Doar niște trial-and-error.
Ca alternativă la ce am menționat, se poate utiliza interfața SQL din DB Manager din QGIS încât să scrii un query SQL, inclusiv pentru realizarea de view-uri. Aceste tabele/view-uri se pot apoi adăuga ca layer în hartă ca și QUERY_LAYERS, iar partea frumoasă este că nu trebuie să aștepți să citești toată baza de date ci trebuie doar să aștepți executarea sintaxei de SELECT.

  #yiv1713914453 #yiv1713914453 -- #yiv1713914453ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv1713914453 #yiv1713914453ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv1713914453 #yiv1713914453ygrp-mkp #yiv1713914453hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv1713914453 #yiv1713914453ygrp-mkp #yiv1713914453ads {margin-bottom:10px;}#yiv1713914453 #yiv1713914453ygrp-mkp .yiv1713914453ad {padding:0 0;}#yiv1713914453 #yiv1713914453ygrp-mkp .yiv1713914453ad p {margin:0;}#yiv1713914453 #yiv1713914453ygrp-mkp .yiv1713914453ad a {color:#0000ff;text-decoration:none;}#yiv1713914453 #yiv1713914453ygrp-sponsor #yiv1713914453ygrp-lc {font-family:Arial;}#yiv1713914453 #yiv1713914453ygrp-sponsor #yiv1713914453ygrp-lc #yiv1713914453hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv1713914453 #yiv1713914453ygrp-sponsor #yiv1713914453ygrp-lc .yiv1713914453ad {margin-bottom:10px;padding:0 0;}#yiv1713914453 #yiv1713914453actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv1713914453 #yiv1713914453activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv1713914453 #yiv1713914453activity span {font-weight:700;}#yiv1713914453 #yiv1713914453activity span:first-child {text-transform:uppercase;}#yiv1713914453 #yiv1713914453activity span a {color:#5085b6;text-decoration:none;}#yiv1713914453 #yiv1713914453activity span span {color:#ff7900;}#yiv1713914453 #yiv1713914453activity span .yiv1713914453underline {text-decoration:underline;}#yiv1713914453 .yiv1713914453attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv1713914453 .yiv1713914453attach div a {text-decoration:none;}#yiv1713914453 .yiv1713914453attach img {border:none;padding-right:5px;}#yiv1713914453 .yiv1713914453attach label {display:block;margin-bottom:5px;}#yiv1713914453 .yiv1713914453attach label a {text-decoration:none;}#yiv1713914453 blockquote {margin:0 0 0 4px;}#yiv1713914453 .yiv1713914453bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv1713914453 .yiv1713914453bold a {text-decoration:none;}#yiv1713914453 dd.yiv1713914453last p a {font-family:Verdana;font-weight:700;}#yiv1713914453 dd.yiv1713914453last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv1713914453 dd.yiv1713914453last p span.yiv1713914453yshortcuts {margin-right:0;}#yiv1713914453 div.yiv1713914453attach-table div div a {text-decoration:none;}#yiv1713914453 div.yiv1713914453attach-table {width:400px;}#yiv1713914453 div.yiv1713914453file-title a, #yiv1713914453 div.yiv1713914453file-title a:active, #yiv1713914453 div.yiv1713914453file-title a:hover, #yiv1713914453 div.yiv1713914453file-title a:visited {text-decoration:none;}#yiv1713914453 div.yiv1713914453photo-title a, #yiv1713914453 div.yiv1713914453photo-title a:active, #yiv1713914453 div.yiv1713914453photo-title a:hover, #yiv1713914453 div.yiv1713914453photo-title a:visited {text-decoration:none;}#yiv1713914453 div#yiv1713914453ygrp-mlmsg #yiv1713914453ygrp-msg p a span.yiv1713914453yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv1713914453 .yiv1713914453green {color:#628c2a;}#yiv1713914453 .yiv1713914453MsoNormal {margin:0 0 0 0;}#yiv1713914453 o {font-size:0;}#yiv1713914453 #yiv1713914453photos div {float:left;width:72px;}#yiv1713914453 #yiv1713914453photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv1713914453 #yiv1713914453photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv1713914453 #yiv1713914453reco-category {font-size:77%;}#yiv1713914453 #yiv1713914453reco-desc {font-size:77%;}#yiv1713914453 .yiv1713914453replbq {margin:4px;}#yiv1713914453 #yiv1713914453ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv1713914453 #yiv1713914453ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv1713914453 #yiv1713914453ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv1713914453 #yiv1713914453ygrp-mlmsg select, #yiv1713914453 input, #yiv1713914453 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv1713914453 #yiv1713914453ygrp-mlmsg pre, #yiv1713914453 code {font:115% monospace;}#yiv1713914453 #yiv1713914453ygrp-mlmsg * {line-height:1.22em;}#yiv1713914453 #yiv1713914453ygrp-mlmsg #yiv1713914453logo {padding-bottom:10px;}#yiv1713914453 #yiv1713914453ygrp-msg p a {font-family:Verdana;}#yiv1713914453 #yiv1713914453ygrp-msg p#yiv1713914453attach-count span {color:#1E66AE;font-weight:700;}#yiv1713914453 #yiv1713914453ygrp-reco #yiv1713914453reco-head {color:#ff7900;font-weight:700;}#yiv1713914453 #yiv1713914453ygrp-reco {margin-bottom:20px;padding:0px;}#yiv1713914453 #yiv1713914453ygrp-sponsor #yiv1713914453ov li a {font-size:130%;text-decoration:none;}#yiv1713914453 #yiv1713914453ygrp-sponsor #yiv1713914453ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv1713914453 #yiv1713914453ygrp-sponsor #yiv1713914453ov ul {margin:0;padding:0 0 0 8px;}#yiv1713914453 #yiv1713914453ygrp-text {font-family:Georgia;}#yiv1713914453 #yiv1713914453ygrp-text p {margin:0 0 1em 0;}#yiv1713914453 #yiv1713914453ygrp-text tt {font-size:120%;}#yiv1713914453 #yiv1713914453ygrp-vital ul li:last-child {border-right:none !important;}#yiv1713914453