Solutie software pentru Districting-Redistricting

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

Solutie software pentru Districting-Redistricting

Jozsef
Buna,

caut o solutie software cu ajutorul caruia se pot grupa automat datele
(poligoanele sau punctele) folosind niste criterii de genul: in fiecare
poligon sa fie de ex.5000 de persoane sau sa delimiteze 1000 de poligoane,
care impart teritoriul in suprafete cvasi-egale; ideal extra: poligonul sa
nu fie mai mare de 5 kmp; poligonul sa nu fie taiata in doua de un obstacol
(rau, cale ferata, etc.).

Este ca si cum as dori sa retrasam limitele de judete din tara folosind
limitele de comune, dar de ex. dorim sa definim 100 de judete fiecare cu
cate cca. 200.000 de locuitori.

In cazul meu insa va trebui sa delimitez aceste unitati de poligoane in
interiorul oraselor. De exemplu ar fi ideal sa pornesc folosind poligoanele
de coduri postale (daca ar exista acest strat) sau alte poligoane (de ex.
sectoarele de recensamant, zonele delimitate de strazi sau grid de cate
100x100metri), sa le incarc cu date (populatie, clienti, etc.), iar apoi cu
o solutie de districting sa le alipesc automat pe baza cerintelor de
districtare.

Multumesc pentru sugestii, ajutor.
Jozsef
Reply | Threaded
Open this post in threaded view
|

Răspuns: [geo-spatial] Solutie software pentru Districting-Redistricting

Denis Pascaru
Nu știu soluția exactă, dar referitor la strat în care să aveți poligoanele la nivel de UAT se poate face simplu. Luați un start cu toate UAT-urile din România, și creați un câmp nou la Atributte Table în ArcMap, cu denumirea coduri poștale, și inserați codurile de pe internet.

    În Luni, 27 Noiembrie 2017 15:37:41, "József Kuszálik [hidden email] [geo-spatial]" <[hidden email]> a scris:
 

     Buna,
caut o solutie software cu ajutorul caruia se pot grupa automat datele (poligoanele sau punctele) folosind niste criterii de genul: in fiecare poligon sa fie de ex.5000 de persoane sau sa delimiteze 1000 de poligoane, care impart teritoriul in suprafete cvasi-egale; ideal extra: poligonul sa nu fie mai mare de 5 kmp; poligonul sa nu fie taiata in doua de un obstacol (rau, cale ferata, etc.).
Este ca si cum as dori sa retrasam limitele de judete din tara folosind limitele de comune, dar de ex. dorim sa definim 100 de judete fiecare cu cate cca. 200.000 de locuitori.
In cazul meu insa va trebui sa delimitez aceste unitati de poligoane in interiorul oraselor. De exemplu ar fi ideal sa pornesc folosind poligoanele de coduri postale (daca ar exista acest strat) sau alte poligoane (de ex. sectoarele de recensamant, zonele delimitate de strazi sau grid de cate 100x100metri), sa le incarc cu date (populatie, clienti, etc.), iar apoi cu o solutie de districting sa le alipesc automat pe baza cerintelor de districtare.
Multumesc pentru sugestii, ajutor.Jozsef
  #yiv5230934765 #yiv5230934765 -- #yiv5230934765ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5230934765 #yiv5230934765ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5230934765 #yiv5230934765ygrp-mkp #yiv5230934765hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv5230934765 #yiv5230934765ygrp-mkp #yiv5230934765ads {margin-bottom:10px;}#yiv5230934765 #yiv5230934765ygrp-mkp .yiv5230934765ad {padding:0 0;}#yiv5230934765 #yiv5230934765ygrp-mkp .yiv5230934765ad p {margin:0;}#yiv5230934765 #yiv5230934765ygrp-mkp .yiv5230934765ad a {color:#0000ff;text-decoration:none;}#yiv5230934765 #yiv5230934765ygrp-sponsor #yiv5230934765ygrp-lc {font-family:Arial;}#yiv5230934765 #yiv5230934765ygrp-sponsor #yiv5230934765ygrp-lc #yiv5230934765hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5230934765 #yiv5230934765ygrp-sponsor #yiv5230934765ygrp-lc .yiv5230934765ad {margin-bottom:10px;padding:0 0;}#yiv5230934765 #yiv5230934765actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv5230934765 #yiv5230934765activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv5230934765 #yiv5230934765activity span {font-weight:700;}#yiv5230934765 #yiv5230934765activity span:first-child {text-transform:uppercase;}#yiv5230934765 #yiv5230934765activity span a {color:#5085b6;text-decoration:none;}#yiv5230934765 #yiv5230934765activity span span {color:#ff7900;}#yiv5230934765 #yiv5230934765activity span .yiv5230934765underline {text-decoration:underline;}#yiv5230934765 .yiv5230934765attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv5230934765 .yiv5230934765attach div a {text-decoration:none;}#yiv5230934765 .yiv5230934765attach img {border:none;padding-right:5px;}#yiv5230934765 .yiv5230934765attach label {display:block;margin-bottom:5px;}#yiv5230934765 .yiv5230934765attach label a {text-decoration:none;}#yiv5230934765 blockquote {margin:0 0 0 4px;}#yiv5230934765 .yiv5230934765bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv5230934765 .yiv5230934765bold a {text-decoration:none;}#yiv5230934765 dd.yiv5230934765last p a {font-family:Verdana;font-weight:700;}#yiv5230934765 dd.yiv5230934765last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv5230934765 dd.yiv5230934765last p span.yiv5230934765yshortcuts {margin-right:0;}#yiv5230934765 div.yiv5230934765attach-table div div a {text-decoration:none;}#yiv5230934765 div.yiv5230934765attach-table {width:400px;}#yiv5230934765 div.yiv5230934765file-title a, #yiv5230934765 div.yiv5230934765file-title a:active, #yiv5230934765 div.yiv5230934765file-title a:hover, #yiv5230934765 div.yiv5230934765file-title a:visited {text-decoration:none;}#yiv5230934765 div.yiv5230934765photo-title a, #yiv5230934765 div.yiv5230934765photo-title a:active, #yiv5230934765 div.yiv5230934765photo-title a:hover, #yiv5230934765 div.yiv5230934765photo-title a:visited {text-decoration:none;}#yiv5230934765 div#yiv5230934765ygrp-mlmsg #yiv5230934765ygrp-msg p a span.yiv5230934765yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv5230934765 .yiv5230934765green {color:#628c2a;}#yiv5230934765 .yiv5230934765MsoNormal {margin:0 0 0 0;}#yiv5230934765 o {font-size:0;}#yiv5230934765 #yiv5230934765photos div {float:left;width:72px;}#yiv5230934765 #yiv5230934765photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv5230934765 #yiv5230934765photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv5230934765 #yiv5230934765reco-category {font-size:77%;}#yiv5230934765 #yiv5230934765reco-desc {font-size:77%;}#yiv5230934765 .yiv5230934765replbq {margin:4px;}#yiv5230934765 #yiv5230934765ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv5230934765 #yiv5230934765ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv5230934765 #yiv5230934765ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv5230934765 #yiv5230934765ygrp-mlmsg select, #yiv5230934765 input, #yiv5230934765 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv5230934765 #yiv5230934765ygrp-mlmsg pre, #yiv5230934765 code {font:115% monospace;}#yiv5230934765 #yiv5230934765ygrp-mlmsg * {line-height:1.22em;}#yiv5230934765 #yiv5230934765ygrp-mlmsg #yiv5230934765logo {padding-bottom:10px;}#yiv5230934765 #yiv5230934765ygrp-msg p a {font-family:Verdana;}#yiv5230934765 #yiv5230934765ygrp-msg p#yiv5230934765attach-count span {color:#1E66AE;font-weight:700;}#yiv5230934765 #yiv5230934765ygrp-reco #yiv5230934765reco-head {color:#ff7900;font-weight:700;}#yiv5230934765 #yiv5230934765ygrp-reco {margin-bottom:20px;padding:0px;}#yiv5230934765 #yiv5230934765ygrp-sponsor #yiv5230934765ov li a {font-size:130%;text-decoration:none;}#yiv5230934765 #yiv5230934765ygrp-sponsor #yiv5230934765ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv5230934765 #yiv5230934765ygrp-sponsor #yiv5230934765ov ul {margin:0;padding:0 0 0 8px;}#yiv5230934765 #yiv5230934765ygrp-text {font-family:Georgia;}#yiv5230934765 #yiv5230934765ygrp-text p {margin:0 0 1em 0;}#yiv5230934765 #yiv5230934765ygrp-text tt {font-size:120%;}#yiv5230934765 #yiv5230934765ygrp-vital ul li:last-child {border-right:none !important;}#yiv5230934765

   
Reply | Threaded
Open this post in threaded view
|

Re: Solutie software pentru Districting-Redistricting

Razvan-2
In reply to this post by Jozsef
 Se face iar recensamantul sau de unde a aparut nevoia?
Soft care sa faca asta nu stiu, dar mi-am facut acum cativa ani o unealta (la care nu mai am surse, nimic), cu care faceam asta la scara romaniei. In primul rand ai nevoie si de puncte si de poligoane.
Daca ai puncte faci poligoane voronoi pentru ele. Daca ai poligoane iei centroizii. De poligoane ai nevoie ca sa faci suprafata finala si ca sa stabilesti care sunt vecinatatile punctelor. Dar in mare parte a algoritmului te vei folosi de puncte.
Ce am facut eu a fost sa import datele intr-un postgis cu extensia de R activa (mi se pare ca am facut si voronoi direct in postgis), si am facut clustering cu R pentru punctele respective pe atributul care ma interesa pana la un nivel de 5-10x mai mare decat numarul tinta. Doar nu vrei sa lucrezi cu numere imense. E posibil sa vrei sa faci iterativ, sa faci subclustere din ce in ce mai mici pana ajungi la un cluster de genul ala, ca sa nu arate complet hidos.
Odata ajuns la multe clustere mai mici problema devine mai usoara. Determini pentru punctele dintr-un cluster vecinatatea folosindu-te de poligoane. Stergi vecinatatile care intretaie drumurile sau raurile sau ce ai tu. Si dupa merge sa faci un backtracking, greedy, whatever care sa sparga in cele 5-10 clustere, folosindu-te de vecinatati, distante, etc scopul fiind sa nu te bazezi pe R ca sa ai mai mult control asupra formei si altor reguli. La final obtii seturile de puncte de care ai nevoie. Faci merge la poligoanele lor echivalente si ai obtinut si suprafata care te intereseaza.    On Monday, November 27, 2017, 3:37:42 PM GMT+2, József Kuszálik [hidden email] [geo-spatial] <[hidden email]> wrote:  
 
    

Buna,
caut o solutie software cu ajutorul caruia se pot grupa automat datele (poligoanele sau punctele) folosind niste criterii de genul: in fiecare poligon sa fie de ex.5000 de persoane sau sa delimiteze 1000 de poligoane, care impart teritoriul in suprafete cvasi-egale; ideal extra: poligonul sa nu fie mai mare de 5 kmp; poligonul sa nu fie taiata in doua de un obstacol (rau, cale ferata, etc.).
Este ca si cum as dori sa retrasam limitele de judete din tara folosind limitele de comune, dar de ex. dorim sa definim 100 de judete fiecare cu cate cca. 200.000 de locuitori.
In cazul meu insa va trebui sa delimitez aceste unitati de poligoane in interiorul oraselor. De exemplu ar fi ideal sa pornesc folosind poligoanele de coduri postale (daca ar exista acest strat) sau alte poligoane (de ex. sectoarele de recensamant, zonele delimitate de strazi sau grid de cate 100x100metri), sa le incarc cu date (populatie, clienti, etc.), iar apoi cu o solutie de districting sa le alipesc automat pe baza cerintelor de districtare.
Multumesc pentru sugestii, ajutor.Jozsef
  #yiv5807157535 #yiv5807157535 -- #yiv5807157535ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5807157535 #yiv5807157535ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5807157535 #yiv5807157535ygrp-mkp #yiv5807157535hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv5807157535 #yiv5807157535ygrp-mkp #yiv5807157535ads {margin-bottom:10px;}#yiv5807157535 #yiv5807157535ygrp-mkp .yiv5807157535ad {padding:0 0;}#yiv5807157535 #yiv5807157535ygrp-mkp .yiv5807157535ad p {margin:0;}#yiv5807157535 #yiv5807157535ygrp-mkp .yiv5807157535ad a {color:#0000ff;text-decoration:none;}#yiv5807157535 #yiv5807157535ygrp-sponsor #yiv5807157535ygrp-lc {font-family:Arial;}#yiv5807157535 #yiv5807157535ygrp-sponsor #yiv5807157535ygrp-lc #yiv5807157535hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5807157535 #yiv5807157535ygrp-sponsor #yiv5807157535ygrp-lc .yiv5807157535ad {margin-bottom:10px;padding:0 0;}#yiv5807157535 #yiv5807157535actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv5807157535 #yiv5807157535activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv5807157535 #yiv5807157535activity span {font-weight:700;}#yiv5807157535 #yiv5807157535activity span:first-child {text-transform:uppercase;}#yiv5807157535 #yiv5807157535activity span a {color:#5085b6;text-decoration:none;}#yiv5807157535 #yiv5807157535activity span span {color:#ff7900;}#yiv5807157535 #yiv5807157535activity span .yiv5807157535underline {text-decoration:underline;}#yiv5807157535 .yiv5807157535attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv5807157535 .yiv5807157535attach div a {text-decoration:none;}#yiv5807157535 .yiv5807157535attach img {border:none;padding-right:5px;}#yiv5807157535 .yiv5807157535attach label {display:block;margin-bottom:5px;}#yiv5807157535 .yiv5807157535attach label a {text-decoration:none;}#yiv5807157535 blockquote {margin:0 0 0 4px;}#yiv5807157535 .yiv5807157535bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv5807157535 .yiv5807157535bold a {text-decoration:none;}#yiv5807157535 dd.yiv5807157535last p a {font-family:Verdana;font-weight:700;}#yiv5807157535 dd.yiv5807157535last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv5807157535 dd.yiv5807157535last p span.yiv5807157535yshortcuts {margin-right:0;}#yiv5807157535 div.yiv5807157535attach-table div div a {text-decoration:none;}#yiv5807157535 div.yiv5807157535attach-table {width:400px;}#yiv5807157535 div.yiv5807157535file-title a, #yiv5807157535 div.yiv5807157535file-title a:active, #yiv5807157535 div.yiv5807157535file-title a:hover, #yiv5807157535 div.yiv5807157535file-title a:visited {text-decoration:none;}#yiv5807157535 div.yiv5807157535photo-title a, #yiv5807157535 div.yiv5807157535photo-title a:active, #yiv5807157535 div.yiv5807157535photo-title a:hover, #yiv5807157535 div.yiv5807157535photo-title a:visited {text-decoration:none;}#yiv5807157535 div#yiv5807157535ygrp-mlmsg #yiv5807157535ygrp-msg p a span.yiv5807157535yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv5807157535 .yiv5807157535green {color:#628c2a;}#yiv5807157535 .yiv5807157535MsoNormal {margin:0 0 0 0;}#yiv5807157535 o {font-size:0;}#yiv5807157535 #yiv5807157535photos div {float:left;width:72px;}#yiv5807157535 #yiv5807157535photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv5807157535 #yiv5807157535photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv5807157535 #yiv5807157535reco-category {font-size:77%;}#yiv5807157535 #yiv5807157535reco-desc {font-size:77%;}#yiv5807157535 .yiv5807157535replbq {margin:4px;}#yiv5807157535 #yiv5807157535ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv5807157535 #yiv5807157535ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv5807157535 #yiv5807157535ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv5807157535 #yiv5807157535ygrp-mlmsg select, #yiv5807157535 input, #yiv5807157535 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv5807157535 #yiv5807157535ygrp-mlmsg pre, #yiv5807157535 code {font:115% monospace;}#yiv5807157535 #yiv5807157535ygrp-mlmsg * {line-height:1.22em;}#yiv5807157535 #yiv5807157535ygrp-mlmsg #yiv5807157535logo {padding-bottom:10px;}#yiv5807157535 #yiv5807157535ygrp-msg p a {font-family:Verdana;}#yiv5807157535 #yiv5807157535ygrp-msg p#yiv5807157535attach-count span {color:#1E66AE;font-weight:700;}#yiv5807157535 #yiv5807157535ygrp-reco #yiv5807157535reco-head {color:#ff7900;font-weight:700;}#yiv5807157535 #yiv5807157535ygrp-reco {margin-bottom:20px;padding:0px;}#yiv5807157535 #yiv5807157535ygrp-sponsor #yiv5807157535ov li a {font-size:130%;text-decoration:none;}#yiv5807157535 #yiv5807157535ygrp-sponsor #yiv5807157535ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv5807157535 #yiv5807157535ygrp-sponsor #yiv5807157535ov ul {margin:0;padding:0 0 0 8px;}#yiv5807157535 #yiv5807157535ygrp-text {font-family:Georgia;}#yiv5807157535 #yiv5807157535ygrp-text p {margin:0 0 1em 0;}#yiv5807157535 #yiv5807157535ygrp-text tt {font-size:120%;}#yiv5807157535 #yiv5807157535ygrp-vital ul li:last-child {border-right:none !important;}#yiv5807157535