Menampilkan garis yang dihasilkan di luar jangkauan peta menggunakan QGIS?

12

Saya telah menggambar peta aliran OD menggunakan generator geometri QGIS, menggunakan ekspresi berikut:

make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
           $currentfeature, 'Attribute2') ) ) ) )

Saya mendapatkan semuanya dengan baik, mendefinisikan lebar garis saya sesuai dengan atribut.

Tetapi ketika saya memperbesar ke "hub", garis yang terhubung ke tempat di luar kanvas peta tidak muncul. Saya kira itu karena fitur tidak seharusnya muncul di peta.

Saya mencoba untuk menghapus centang opsi "Klip fitur ke tingkat kanvas" di menu lanjutan, baik di "generator Geometri" dan di tingkat "Line", tetapi masih tidak muncul.

Saat diperbesar pada hub

Saat membuka ritsleting

Saya ingin semua baris saya muncul, bahkan ketika diperbesar pada hub.

mamouthautapis
sumber
Ini tidak akan membantu ... tapi saya mendapatkan masalah yang sama dengan pendekatan pemetaan aliran Underdark. Pasti ada sesuatu tentang cara geometri padat diberikan ... hanya saran untuk bermain dengan lebar atribut untuk peta tingkat lokal ... membuat lebarnya lebih kecil?
Andrew Tice
Mungkin Anda dapat mengunggah data Anda (shp ...) agar dapat meniru langkah-langkah Anda dan mencoba untuk mendapatkan jawaban.
César Arquero
1
Shapefile berasal dari sini: IGN dan tabel
gabungan
Mungkin segmentasi garis bisa berupa peretasan untuk membuatnya muncul di peta, jika garis hanya menunjukkan ib kedua ujungnya dekat dengan batas peta. Rumput-alat 'v.split.length' mungkin berhasil.
Julian
1
Apakah ini masalah yang sama dengan yang saya alami (jika itu memberikan cara sederhana untuk memahami masalah ini - jika tidak, abaikan saya): Saya ingin menunjukkan dataset titik dengan seluruh rangkaian titik yang dihasilkan bergeser 300 km ke timur dan 600 km utara dibandingkan dengan poin yang sebenarnya. Ini berfungsi - tetapi hanya ketika diperbesar sehingga titik-titik asli berada di dalam kanvas peta. Segera setelah Anda memperbesar ke set titik yang dihasilkan (memindahkan lokasi titik aktual di luar kanvas) titik yang dihasilkan menghilang. (QGIS 2.14)
Rostranimin

Jawaban:

2

Masalahnya di sini adalah bahwa tidak ada data aktual yang mengatakan "ada garis di sini". Ekspresi Anda adalah bagian dari Styling Lapisan, dan hanya ditemui dalam proses rendering ketika dua poin yang berlaku juga diberikan.

Coba gunakan Jarak ke alat hub terdekat , ditemukan di kotak alat pemrosesan di bawah Alat analisis vektor. Saya perhatikan bahwa Anda memilih poligon tertentu untuk jari-jari Anda, dan mengatur garis sesuai dengan atribut lainnya. Ini mungkin, tetapi Anda harus melakukan beberapa hal untuk mempersiapkannya. Untungnya, alat ini secara otomatis menggunakan centroid ketika input poligon dipilih.

  1. Alat pemilihan vektor > Ekstrak menurut atribut
    • Lapisan input: 'LAYER_1'
    • Atribut pilihan: 'ATTRIBUTE_1'
    • Operator: =
    • Nilai: 'nilai yang mengacu pada hub poligon'
    • Diekstraksi (atribut): 'HUB'

  2. Alat pemilihan vektor > Ekstrak menurut atribut
    • Lapisan input: 'LAYER_1'
    • Atribut pilihan: 'ATTRIBUTE_2'
    • Operator: dipilih sesuai kebutuhan
    • Nilai: 'nilai mengacu pada poligon yang berbicara'
    • Diekstraksi (atribut): 'SPOKES'

  3. Alat analisis vektor > Jarak ke hub terdekat
    • Lapisan poin sumber: 'BERBICARA'
    • Lapisan hub tujuan: 'HUB'
    • Atribut nama lapisan hub: membuat bidang "Nama Hub" di output berdasarkan pada atribut yang dipilih, jika beberapa hub ditentukan dalam lapisan input
    • Jenis bentuk keluaran: Line to hub
    • Unit pengukuran: Meter
    • Jarak hub: 'OUTPUT_LAYER_NAME'

Output yang dihasilkan mempertahankan semua atribut dari input layer 'SPOKES', sehingga atribut yang dibutuhkan untuk style line akan tetap ada. Sebagai layer vektornya sendiri, garis-garis akan tetap terlihat di semua level zoom, terlepas dari visibilitas dari kedua titik akhir.

Jika Anda merasa nyaman dengan Graphical Modeler, Anda bahkan dapat membangun langkah-langkah ini dalam satu proses tunggal agar tidak mengacaukan ruang kerja Anda dengan lapisan yang tidak perlu.

JoshC
sumber
3

Temukan solusi berikut: Gunakan lapisan virtual tambahan alih-alih generator geometri untuk menampilkan garis.

Definisi lapisan virtual:

select m.FID, make_line(.....) as geometry from my_layer m

(geometri asli dapat dirujuk menggunakan m.geometry)

Untuk memastikan lapisan virtual di-refresh ketika my_layer diedit, buka properti layer | dependensi dan pastikan my_layer dicentang (yang diklik secara default).

Mesa
sumber