Daha çox

ArcGIS -də birdən çox nöqtə sıxlığı sənədləri yaratmaq üçün xüsusiyyət sinfi vasitəsilə necə təkrar etmək olar?

ArcGIS -də birdən çox nöqtə sıxlığı sənədləri yaratmaq üçün xüsusiyyət sinfi vasitəsilə necə təkrar etmək olar?


Hər bir xüsusiyyət daxilində fərqli sıxlıq xüsusiyyətlərinə malik olan bir xüsusiyyət sinifindəki hər bir xüsusiyyət üçün ayrı nöqtə sıxlığı təbəqələri yaratmağa çalışıram.

Nöqtənin sıxlığını hesablamadan əvvəl hər bir xüsusiyyət üçün yeni bir xüsusiyyət sinfi yaratmadan bunu bacarmaq istərdim. İşdə indiki modelim:

Redaktə edin: Hazırda modelim bir səhv qaytarır

Model Builder və ya ArcPy -də bir -birindən asılı olmayan hər bir xüsusiyyət üçün yeni nöqtə sıxlığı xüsusiyyət sinifləri necə yarada bilərəm?


ESRI dəstəyindən 010246 xətası ya bir vəziyyəti təsvir edir bütün giriş nöqtələri eyni yerə malikdir və ya bir və ya heç bir nöqtə seçilməyib. İnanıram ki, ikincisi modelinizə aiddir. Bəzi çoxbucaqlıların heç bir nöqtəsi olmadığını və ya bir nöqtədən ibarət olduğunu əl ilə yoxlamağı təklif edirəm - sayları əldə etmək üçün məkan birləşməsini istifadə edə bilərsiniz. Bundan sonra a yaradın etibarlı yalnız iki və ya daha çox nöqtəyə malik çoxbucaqlı modeliniz üçün giriş qatı.

Hesabatı gördükdən sonra problemin seçim olduğuna inanmıram, amma şərhinizlə əlaqədar olaraq burada hər şeyi aydınlaşdırmaq üçün bir görüntü var. Giriş cədvəli aktiv seçimlə bal cədvəlinizdir və seçim göstərildiyi kimi CLEAR_SELECTION. Təcrübə istifadə edilmir. EDIT: CLEAR_SELECTION ilə atributlar vasitəsi ilə seçilən qat, nöqtə sıxlığı alətinin çıxışını yaratdıqdan sonra (ilkin şərtlə) yerləşdirilməlidir.

Qeyd edək ki, nöqtə sıxlığı çıxışı rasetdir və əslində I sıxlıq xüsusiyyət sinfi yoxdur. Alətin yardımını oxumağı məsləhət görürəm. Orcpy nümunələrini də orada tapa bilərsiniz. Budur bir keçid

Başqa bir EDIT: İterate Xüsusiyyətlərindən istifadə etdiyinizi gördüm - Düşünürəm ki, bunun əvəzinə Satır Seçimi iteratorından istifadə etməlisiniz. Bu iterator hər bir çoxbucaqdan keçir və nöqtələrin kəsişməli olduğu seçilmiş çoxbucaq kimi istifadə edərdi.

Yuxarıda təklif edildiyi kimi bir modelin nümunəsi və çıxışı:

EDIT: hər bir iterasiyanın sonunda modelə maska ​​ilə ekstraktın əlavə edilməsinin, sıxlıq rasterinin çoxbucaqlı xüsusiyyətlər daxilində hər bir seçilmiş (təkrarlanan) çoxbucağın dəqiq ölçüdə çıxarılmasına kömək edəcəyini qeyd etmək lazımdır


Sizə göstərmək istədiklərim üçün düzgün işləməsi üçün onu yenilədim. Unutmuşdum ki, atributlar hər filtr üçündür və hər giriş düyməsi atributlar lüğətindəki bir açarın adıdır. Dəyərlər özümüz istədiyimiz məlumatı ehtiva edən lüğətlərdir.

Ancaq unutmayın ki, bu, bütün işləri yerinə yetirmir. Daha çox məlumat istəsəniz və bəzi işləri təkbaşına etmək istəyirsinizsə, bir neçə şeyi araşdırmalı olacaqsınız. Bunun nə etməsi, bütün filtrlərin bütün parametrləri ilə təkrarlanır və mənası olmasa da adlarını, minlərini və maksimumlarını çap edir. (Məsələn, şəkillərdə min və ya maksimum yoxdur - bu halda "(null)" yazır.) Bir çox parametrlərin min və ya max olmadığını unutmayın. Bütün üzən nöqtə aralığını əhatə edə bilərlər. Bir kaydırıcı hazırlamağa çalışırsınızsa, kCIAttributeMin və kCIAttributeMax yerinə kCIAttributeSliderMin və kCIAttributeSilderMax xüsusiyyətlərindən istifadə edin.

Ayrıca atribut növünü və sinifini əldə edə və digər dəyər növləri üçün aralıqları çap edə bilərsiniz (bu məntiqli olarsa). Məsələn, bəzi parametrlər nöqtələr, düzbucaqlar və s.

Ayrıca, sənədlərə səhvlər yazmaqda ciddi idim. Səhv etməsəniz, əlbəttə ki, onları dəyişdirməyəcəklər. Sənədlərlə əlaqədar səhvlər etdim və onlar düzəldildi.


1 Cavab 1

OP -nin təklif etdiyi yanaşma ilə bağlı problem, məlumatların təsadüfi xarakterini qəbul etməməsidir. Başqa sözlə, RES -in dəyəri bütün məlumatlar deyil, yalnız müşahidə olunan bir nümunədir.

Bu şəkildə hesablanan və $ text dəyərləri nümunəsinə əsaslanan əyilmə nöqtəsi$ - buna $ text deyin( mətn) $- yalnız bir təxmindir doğru əyilmə nöqtəsi -$ text deyin_0 $-: əldə edə biləcəyimiz məlumat bütün məlumatlara daxil olsaydı (yalnız bir nümunə deyil).

Başqa bir $ text nümunəsi çəksəydik, baxın^1 $ eyni paylamadan alındı ​​və bunun əvəzinə məlumat olaraq istifadə edildikdə fərqli bir $ text dəyərini əldə edərdik( mətn^1) həm də $.

$ Mətnini tanımaq anlayışıdır( mətn) $ mütləq $ text üçün ən yaxşı qiymət deyil_0 dollar. Bunun üçün ümumiyyətlə çox səs -küylüdür. Buradakı səs -küy, $ text əsərlərini təsvir etməyə yönəlmiş deməkdir$ başqa bir nümunədə $ text ola bilməz^1$.

Tipik olaraq, maraq dəyişəninin dəyəri hamarlanır (burada $ text$) bir səpələnmə planı ilə daha hamar (orada çoxları var, amma bsplines və ya Fourrier kimi açıq törəmələri olan birini seçməliyik).

Sonra, hamarlanmış əyrinin ilk törəməsinin 0 olduğu yerləri axtarın (və lokal maksimum üçün, hamarlanmış əyrinin ilk törəməsi həmin yerin solunda pozitiv və sağda mənfi). $ Text əsl əyilmə nöqtəsinin daha hamar- daha az səs-küylü olmasıdır_0$.

Budur R təsvirli bir nümunə (kodu oxunaqlı tutmaq üçün, daha hamar bir dağılım törəməsinin həqiqi hesablamasını fda.usc :: fdata.deriv funksiyasına təxirə salmağı seçdim, ancaq bu da əllə edilə bilər)

Beləliklə, bu nümunədə orijinal məlumatlar ($ text$) nöqtələrdir (tezliklərə görə sıralanır). Ulduzlar eyni paylanmanın başqa bir nümunəsini göstərir ($ text^1 $). Mavi xətt, ($ text$) (nöqtəli mavi xətt eynidir, lakin $ mətnə ​​əsaslanır^1$).

Qırmızı əyri, mavi əyrinin (açıq) ilk törəməsidir (30 ilə vurulur, eyni ölçüdə görünür). Burada da nöqtəli qırmızı xətt qırmızı kimi qurulur, ancaq $ text istifadə olunur$ Text əvəzinə ^1 $$.

Qırmızı xətdə, qırmızı əyrinin 0 -ı keçdiyi və bu nöqtənin solunda pozitiv və sağda mənfi olduğu tək bir lokalizasiya var (təxminən = 100 ətrafında). Bu $ text təxmini olacaq$ Mətnə əsaslanan _0 $$ ($ mətn( mətn)$).

Bu təxminin $ text maksimum dəyərlərinə yaxın olduğunu görə bilərsiniz$, amma sakitcə buna uyğun gəlmir. Bunun səbəbi mavi xəttin ($ text$).

Bu azalma səbəbiylə $ text$ Textdən _0 $ əldə edərdiniz^1 $, $ text istifadə edərək əldə etdiyinizdən o qədər də fərqlənmir$. Bu halda $ text( mətn^1) $, $ mətninin bir az sağ tərəfindədir( mətn)$.

Bu şəkildə əldə etdiyiniz əsl əyilmə nöqtəsi ilə bağlı təxmininiz, hesablamaq üçün istifadə etdiyiniz fərdi nümunələrin özünəməxsusluğu ilə daha az hərəkət edir və əsl $ mətninin daha etibarlı bir proqnozçusu olacaq._0$.

Qırmızı əyrinin 0 keçdiyi nöqtələri tapmaq üçün kod yazın. Bu @josliber tərəfindən göndərilən kodun burada uyğunlaşdırılmasıdır.

Yuxarıdakı skript, mavi əyrinin (qırmızı əyri) ilk törəməsinin 0 -ı keçdiyi bütün aralığı tapır (çünki indi həm yerli minimumları, həm də yerli maksimumları istəyirsiniz).


Dataset və Performansın Başlanğıcı

Bu bölmədə əvvəlcə standart bir maşın öyrənmə məlumat dəsti seçəcəyik və bu verilənlər bazasında performans üçün bir baza quracağıq.

Bu, növbəti bölmədə məlumatların hazırlanmasının kənar identifikasiyası və çıxarılması üsulunu araşdırmaq üçün kontekst təmin edəcək.

Mənzil Qiymətlərinin Tənzimlənməsi Məlumat Kümesi

Mənzilin qiymətini tənzimləmə məlumatlarından istifadə edəcəyik.

Bu verilənlər bazası, evin və şəhərətrafı ərazinin xüsusiyyətlərini təsvir edən 13 giriş dəyişəninə malikdir və ətrafdakı evlərin orta dəyərinin minlərlə dollarla proqnozlaşdırılmasını tələb edir.

Veri toplusu haqqında daha çox məlumatı buradan əldə edə bilərsiniz:

Veri toplusunu yükləməyimizə ehtiyac yoxdur, çünki işlədiyimiz nümunələrin bir hissəsi olaraq avtomatik olaraq yükləyəcəyik.

Veri toplusunu açın və xam məlumatları nəzərdən keçirin. Məlumatların ilk bir neçə sətri aşağıda verilmişdir.

Görə bilərik ki, hər biri fərqli ölçülərə malik olan ədədi giriş dəyişənləri olan bir reqressiya proqnozlaşdırıcı modelləşdirmə problemidir.


LIDARVIEWER İLƏ NÖKTƏN TƏSBİRLƏR

LidarViewer (Kreylos və digərləri, 2008) UC Davis W.M. Keck Yer Elmlərində Aktiv Vizualizasiya Mərkəzi (KeckCAVES). Proqram paketi, KeckCAVES -də inkişaf etdirilən Virtual Reality User Interface (Vrui) alətlər dəstinin (Kreylos, 2008) üstündə qurulmuşdur. Vrui alət dəsti, dizüstü kompüterdən CAVE Avtomatik Virtual Mühitə (CAVE) qədər geniş bir sıra avadanlıqlarda 3D vizualizasiya üçün vahid bir interfeys təmin edir. LidarViewer paketi, lidar məlumatlarının işlənməsi və qurulması üçün köməkçi proqram proqramları paketini də ehtiva edir. LidarViewer, GNU General Public License v2 altında buraxılır və Linux, Mac OS X və digər UNIX kimi əməliyyat sistemlərində işləyir. Yükləmə bağlantıları və istifadə təlimatları http://wiki.cse.ucdavis.edu/keckcaves:home saytında onlayn olaraq mövcuddur. Aşağıdakı alt bölmələr, LidarViewer və əlaqəli proqram proqramlarının mövcud imkanlarını vurğulayan yer elmi tətbiqlərinin nümunələrini göstərir. LidarViewer kimi nöqtəyə əsaslanan bir hesablama çərçivəsindəki lidar məlumatlarının təhlili ilə bağlı bəzi gələcək istiqamətlərin müzakirəsi ilə başa çatırıq.

Məlumatların sürətli qiymətləndirilməsi

Bir hava lidar sorğusunun səfərbər edilməsinin yüksək xərcləri səbəbiylə, bir araşdırma zamanı keyfiyyətə nəzarət mümkün olan ən yaxşı ərazi məhsulunu yaratmaq üçün çox vacibdir. Boşluqları doldurmaq və ya problemli xətləri yenidən uçmaq üçün daha sonra geri qayıtmaq olduqca bahalı ola bilər. Nisbətən ucuz olan yerüstü tədqiqatlarda belə, toplama zamanı məlumatların əhatə dairəsini mühakimə edə bilmək anket iş axınlarını optimallaşdıra bilər. LidarViewer, əl məlumatlarının qiymətləndirilməsi vəzifəsinə ideal şəkildə uyğundur, çünki oktree quruluşu anket davam etdikcə əlavə məlumatları tez bir zamanda hazırlayır və düzəldir. Məlumat nöqtələrinin orijinal ölçüləri LidarViewer tərəfindən 3D formatında göstərildiyindən, əvvəlcə məlumatların cızılması üçün vaxt aparan addımı atmadan, anketlər, əhatə dairəsindəki boşluqlar və ya kobud qeyd səhvləri əvvəlcədən işləndikdən dərhal sonra müəyyən edilə bilər. Eynilə, nöqtə buludunun real vaxtda sürətli göstərilməsi, lidar aləti, diferensial GPS sistemi və ya itkin nöqtələr və ya zahirən təhrif olunmuş lidar şəkilləri kimi ortaya çıxa biləcək inertial ölçü vahidi ilə bağlı problemləri izləməyə imkan verir. Bu cür göstərmə həm də tədqiqatçılara nöqtə sıxlığının xüsusi maraq doğuran xüsusiyyətləri həll etmək, bitkilərin nüfuz etmə dərəcəsini qiymətləndirmək və ya toz və ya nəm səbəbiylə həddindən artıq nöqtə itkisini yoxlamaq üçün kifayət olub olmadığını müəyyən etməyə imkan verir.

Sürətli məlumatların qiymətləndirilməsi, lidar məlumatlarının toplanması ilə eyni vaxtda və ya dərhal sonra şərh edilməsinin arzu edildiyi fəlakətlərə qarşı mübarizə sahəsində daha böyük rol oynayır. Məsələn, Baja Kaliforniyanın şimalında 4 Aprel 2010 Mw 7.2 El Mayor-Cucapah zəlzələsindən sonra səthi qırılma nəticəsində toplanan havadan gələn lidar məlumat dəsti, kiçik bir alt hissəsi Şəkil 1A-da göstərildiyi kimi 3.7 milyard nöqtədən ibarətdir. 2.5 gün və dörd nüvəli 2.8GHz Linux PC istifadə edərək 3.5 saat ərzində 100Gb oktree faylına əvvəlcədən işlənmişdir (Cədvəl 1). Ayrı -ayrılıqda LAS sənədləri, eyni vaxtda təhlil etmək üçün bir neçə dəqiqə ərzində əvvəlcədən işlənə bilərdi. Şəkil 1B, nöqtə buludunun birbaşa hillshading -in burada göstərilən Borrego fayının arızası kimi incə maraq xüsusiyyətlərini necə tez bir zamanda vurgulayacağını göstərir.

İstər xam intensivlik dəyərlərini (Şəkil 1A), istərsə də təpə örtüyünün göstərilməsini (Şəkil 1B) görsün, hər iki təsvir yalnız bir nöqtə buludundan ibarətdir. Ən yaxın ön plan istisna olmaqla, bu məlumat dəstinin sıxlığı nöqtələrin üst -üstə düşməsi üçün kifayətdir və davamlı bir səth illüziyası yaradır. Bu görüntü keyfiyyəti, LidarViewer tərəfindən saniyədə 30 kadr sürətlə dinamik şəkildə istehsal edilə bilər ki, istifadəçi həmişə tam həlli kimi görünən tam məlumat dəsti ilə gəzə bilsin.

Real vaxt Hillshading

Varsayılan olaraq, LidarViewer, sabit rəng təyinatları ilə nöqtələr verir, bunlar ya lazer geri dönmə intensivliyi, ya da birlikdə yerləşdirilən görüntülərdən təyin edilmiş rəng ola bilər. Ümumiyyətlə griddə atılan intensivlik məlumatları təbəqələşmə və ya bitki örtüyü kimi xüsusiyyətlərin müəyyən edilməsində faydalı ola bilər (Şəkil 1A və 4A Animasiya 1). İsteğe bağlı bir işıqlandırma əvvəlcədən işlənmə addımında hesablanmış yerli teğet təyyarələrlə (Cədvəl 1), təpə örtüyü bir və ya daha çox dinamik və ixtiyari işıq mənbələrindən simulyasiya edilə bilər (Şəkil. 1B və 4B) və hibrid görüntü yaratmaq üçün rəng məlumatları ilə birləşdirilə bilər ( Şəkil 4C). Raplee Ridge bölgəsi üçün Şəkillər 4A və 4C və Animasiya 1-də göstərilən nöqtə geri qayıtma intensivliyi deformasiya olunmuş yataqların litologiyası haqqında faydalı məlumatlar daşıyır. Bu vəziyyətdə, açıq rəngli boz kireçtaşı, tünd qırmızı qumdaşı və ya şist vahidlərindən daha çox lazer enerjisini əks etdirir.

Müasir qrafik aparat və proqram təminatının güclü imkanlarından biri göstərilən 3D obyektlərin dinamik kölgələndirilməsidir. LidarViewer, bu texnologiyadan real vaxtda dağlıq ərazi mənzərələri yaratmaq üçün istifadə edir. İstifadəçilər "virtual günəş" in azimutunu və yüksəkliyini qrafik istifadəçi interfeysi (GUI) vasitəsi ilə tənzimləyə bilər və ya GUI vasitəsi ilə və ya birbaşa izlənilən 3D giriş cihazları vasitəsi ilə əlavə işıq mənbələri yarada və hərəkət etdirə bilər. ” Çoxlu işıq mənbələrindən real vaxt işıqlandırması, ixtiyari nöqtələrdən tam həll nöqtəli buludların 3D göstərilməsi ilə birlikdə lidar nöqtə buludlarını interaktiv şəkildə görüntüləmək üçün güclü bir yol təqdim edir. Bu cür interaktivlik, öz növbəsində, yataq təyyarələri (Şəkil 4B) və ya arızalar (Şəkil 1B) kimi nöqtə-bulud məlumatlarına olan maraq xüsusiyyətlərini tapmaq üçün yeni yanaşmalara imkan verir. Hal -hazırda, LidarViewer xam nöqtə rəngi (məsələn, intensivlik), təpə gölgəsi və ya bunların birləşməsini göstərir. Yamacın, aspektin və əyriliyin göstərilməsi təpə alqoritminin sadə uzantılarıdır və istifadəçi tərəfindən Python proqramlaşdırma interfeysi istifadə edərək əlavə bir ön işləmə addımı olaraq edilə bilər. Bir məlumat dəstindən birdən çox landşaft xüsusiyyətlərini göstərmək qabiliyyəti LidarViewer -in növbəti əsas buraxılışı üçün bir məqsəddir.

Xüsusiyyətlərin seçilməsi və ölçülməsi

LidarViewer, xam lidar nöqtələri ilə birbaşa əlaqə qurma qabiliyyətini təmin etməklə nöqtə buludlarına daxil edilmiş xüsusiyyətləri seçmək və ölçməyi asanlaşdırır. Sezgisel bir nümunə olaraq, Şəkil 5 və Animasiya 1-də, dalğalanma və enmə istiqamətini ölçmək üçün həndəsi bir təyyarəni yataq otağına necə tez və interaktiv şəkildə yerləşdirə biləcəyimizi göstəririk. Məlumat nöqtələri sferik olaraq seçilir seçim fırçası tənzimlənən radius. Fırçanın radiusu coğrafi (məlumatlara nisbətən) deyil, fiziki (ekrana nisbətən) bir dəyərdir, belə ki böyütmək və ya kiçiltmək istifadəçiyə birdən çox miqyasda sürətlə işləyərək dəqiq seçimlər etməyə imkan verir. CAVE kimi təsirli bir 3D mühitində (3D ekran və izlənilən 3D giriş cihazları), seçim fırçası nöqtələri seçmək üçün məlumatlar vasitəsilə özbaşına hərəkət etdirilə bilər. Tipik 2D mühitlərdə, məsələn, masaüstü və ya dizüstü kompüterlərdə, seçim fırçası ümumiyyətlə siçan imlecinin altındakı məlumat nöqtələrinə yansıtılır, buna görə də fırça taranmış əraziyə kilidlənir. Hər iki halda da mənzərədəki planar xüsusiyyətlərdən nöqtələr seçmək sadədir (Şəkil 5A).

Bir xüsusiyyət seçildikdən sonra, istifadəçi ən kiçik kvadrat yanaşma istifadə edərək seçilmiş nöqtələrə bir neçə həndəsi primitivdən birini yerləşdirərək dərhal xüsusiyyət modelini qura bilər (Şəkil 5B Animasiya 1). Bu məqsədlə orijinal nöqtə məlumatları ilə işləməyin dörd üstünlüyü var: birincisi, seçilmiş dəst mövcud məlumatların uyğunluğunun real qiymətləndirilməsinə gətirib çıxaran mövcud nöqtə ölçmələrini əks etdirir (LidarViewer tərəfindən RMS qalığı olaraq bildirilmişdir) ). İkincisi, ballar özünəməxsus məkan quruluşuna və lazer geri qaytarılma intensivliyinə əsaslanan bitki örtüyünün xaric edilməsi və ya hədəf yatağı olaraq təyin olunan məlumatların mövqeyindən və lazer geri qaytarılması kimi obyektiv meyarlara əsaslanaraq seçilmiş dəstə daxil edilə və ya xaric edilə bilər. intensivliyi (məsələn, Şəkil 5A). Üçüncüsü, yataq dəstinin yanındakı kölgələr kimi heç bir məlumatın olmadığı yerlər uyğunluğa kömək edə bilməz. Dördüncüsü, uyğunluqlar, hər bir ızgara nöqtəsinin mənşəyinin bilinmədiyi və birdən çox nöqtə ölçüsünü ehtiva edə biləcəyi bir cədvələ uyğunlaşma xüsusiyyətindən fərqli olaraq, aliasiyadan əziyyət çəkən interpolasiya edilmiş nəticələrə deyil, birbaşa ölçülmüş məlumatlara əsaslanır. , ətrafdakı şəbəkə hüceyrələrindən interpolasiya edilməmiş məlumatların sahələri.

Nöqtə Buludlarının İnteraktiv Təhlili

LidarViewer -in doğma 3D məlumat təqdimatı, məlumatları əldə etmək mümkün olmayan interaktiv analiz növlərinə borcludur. Burada, El Mayor-Cucapah zəlzələsindən sonra toplanan yerüstü lazer skaneri məlumatlarından istifadə edərək, quraşdırılmış təyyarədən nöqtə məsafəsinin təhlili nümunəsini göstəririk (Gold və digərləri, 2010). Bu məlumatlar açıq bir qüsursuz üzdəki çox sıx aralıklı (∼1 sm aralıq) ölçüləri əhatə edir (Şəkil 6A). Təyyarəni qüsur səthinə yerləşdirdikdən sonra, bu müstəvidən ortogonal məsafənin real vaxt hesablamasına əsaslanaraq nöqtələr göstərmək üçün LidarViewer-də quraşdırılmış funksiyadan istifadə edirik (Şəkil 6B). Təhlil, qırılma müstəvisində ikincil çatlama və asma divarın qatlanması kimi yaxın sahə deformasiyasına bağlı ola biləcək incə dalğalanmaları göstərir. Qeyd edək ki, bu nümunə yerüstü lazer-skaner nöqtəli buludların 3D təsvirinin əhəmiyyətini də göstərir: 85 ° daldırma xətasız üzün detallı quruluşu, orijinal fay üzünün sahəsinin onda birindən az olan üfüqi bir şəbəkəyə yansıtılacaq, ehtimal ki, orijinal qətnaməsindən ciddi şəkildə pozulmasına səbəb ola bilər. Bu problem, VÖEN əsaslı texnikalarla da aradan qaldırıla bilər, lakin bunlar xam nöqtə buludu üzərində heç bir hesablama üstünlüyü vermir.

LidarViewer -də istifadə edilə bilən interaktiv analizin başqa bir nümunəsi, bir nöqtə buludundakı bitki örtüyünün əl ilə təsnif edilməsidir (Animasiya 2). Geniş bir lazer taramasında praktik olmasa da, yerdən qazancların sayını maksimuma çatdırmağın arzu olunduğu seçilmiş tədqiqat sahələrində əllə tərləmə effektiv ola bilər. Tipik olaraq, devegetation, ızgaralı bir rəqəmsal yüksəklik modelinin istehsalından əvvəl bir süzgəc mərhələsi olaraq istifadə olunur. Süzgəc kimi bir neçə meyar tətbiq oluna bilər, baxmayaraq ki, yerli nöqtədən nöqtəyə yamac artı məsafə eşikləri bitki örtüyünün təsnifatı üçün ən təsirli mexanizmdir (məsələn, Haugerud və digərləri, 2003). Təbiət etibarilə, bu yanaşma, yerli dik xüsusiyyətlərin (məsələn, kanal divarları və fay yarıqları) kəsilməsi və dik yamaclarda yerin qaytarılmasının seyreltilməsi kimi arzuolunmaz təsirlərə də səbəb olacaqdır. 3D mühitində LidarViewer ilə işləməklə bitki örtüyü yer səthindən vizual olaraq fərqləndirilə bilər. İzlənilən bir 3D giriş cihazı ilə 3D interaktiv seçimdən istifadə edərək bitki örtükləri səmərəli şəkildə seçilə bilər və sonradan LidarSubtractor, LidarViewer paketindəki əlavə köməkçi proqramdan istifadə edərək nöqtə buludundan silinə bilər. Manual yanaşma, CAVE və ya aşağı qiymətli (∼ 7.000 dollar) masaüstü 3D ekran sistemi (http://www.idav.ucdavis.edu/∼okreylos/ResDev/LowCostVR/index.html) kimi təsirli bir 3D vizual mühit tələb edir.

İndiyə qədər həm havadan, həm də yerüstü lazer skaner məlumatlarında əl ilə tərəqqi tətbiq etdik (Şəkil 6 və 7). Haiti'deki Enriquillo fayının araşdırılmasında, Cowgill et al. (2012) avtomatlaşdırılmış bitki təsnifatının, 12 Yanvar 2010 zəlzələsindən dərhal sonra toplanan havadan gələn lidar məlumatlarından lazer geri dönmələrinin 90% -ə qədərini çıxardığını təsbit etdi. Aşağı relyefli şəhər şəraitində mədəni xüsusiyyətlərin aradan qaldırılması üçün əlverişli olsa da, Haiti məlumat dəstinin bitki filtrasiyası incə fay zonası xüsusiyyətlərinin xəritələndirilməsi üçün çox aqressiv oldu. Bitki örtüyünü əl ilə seçərək və çıxararaq, Cowgill et al. (2012) balların yalnız ∼30% -nin seçilmiş tədqiqat sahələrində əsaslandırılmamış qaytarılmalar olduğunu və hətta bitki örtüyünün çıxarılmasının avtomatlaşdırılmış alqoritminin dəqiq tənzimlənmiş bir versiyasının da balların 50% -dən çoxunu saxlaya bilməyəcəyini təsbit etdi. Eyni şəkildə, NCALM tərəfindən görüntülənən şimaldakı San Andreas Faydan avtomatik və əllə təsnif edilən məlumatları müqayisə edərək, sırasıyla 83% və 51% bal verildi (Animasiya 2 Şəkil 7).

Yerüstü lazer-skaner məlumatları üçün, yüksək səviyyəli detalların və 3D quruluşunun tam avtomatik süzgəci qadağan edə biləcəyini gördük. Baja Kaliforniyadan alınan nümunə məlumatları üçün (Şəkil 6), yer səthinin üstündə olan bitki örtüyünü çıxarmaq üçün orta hündürlük filtrindən istifadə etdik və sonra qalan bitki nöqtələrini ərazi xüsusiyyətlərindən fərqləndirmək üçün əl təsnifatından istifadə etdik. Əksər hallarda, bitki örtüyü təsnifatı, daha yüksək qayıdış sıxlığı və daha yüksək dəqiqliyin bitki örtüyü ilə torpaqdan gələn gəlirləri ayırd etməyi asanlaşdırdığı yerüstü lidar məlumat dəstlərinə daha praktik olaraq tətbiq oluna bilər.


Göndərilən kod aşağıdakıları edir:

  1. Sadəcə saymaq üçün bütün sətirləri oxuyun
  2. Doğru ölçüdə bir sıra yaradın
  3. Bütün sətirləri oxuyun yenidən, bu dəfə saxlama üçün
  4. Bütün sətirləri tərs qaydada çap edin

Satırların sayını tapmaq üçün bir faylı tamamilə oxumaq israfçıdır və sonra məzmunu saxlamaq üçün yenidən oxumaq lazımdır. Satırların sayını əvvəlcədən bilmək ehtiyacını ortadan qaldırmaq üçün tutumunu lazım olduğu qədər artıra biləcək bir məlumat quruluşunda saxlamaq daha yaxşı olar. Yəni hər hansı bir List tətbiqindən istifadə edin.

Mümkün səhv

Təsvir, girişdə hər bir sətirdə tam olaraq bir ədəd olduğunu qeyd etmir. Belə olmalıdır, əks halda bu kod yaxşı işləməyə bilər:

Yəni hər sətirdə birdən çox nömrə varsa, onda bütün faylı oxumayacaqsınız, yalnız ilk $ N $ ədədləri. Eynilə, əgər boş sətirlər varsa, o zaman kifayət qədər ədəd olmaya bilər və sonra .nextInt çağırışı NoSuchElementException atacaq.

İş ondadır ki, orada proqram heç bir tam ədəd əməliyyatı istifadə etmədiyi üçün, yalnız oxu və çap et, tam ədədləri oxumağın heç bir mənası yoxdur. Unutmayın ki, tam ədədləri oxuduğunuzda, ayrıca təhlil etmə addımınız da olur. Satırları simli olaraq oxumaq daha məntiqli olardı, daha sadə olardı və hər halda həqiqətən ehtiyacınız olan budur.

Təklif olunan tətbiq

Düşən bir İterator ilə LinkedList istifadə edərək geri dönüş məntiqini asanlaşdıran alternativ, daha səmərəli bir həll budur:

Kod baxımından yuxarıda göstərilənlər daha aydın oxunur və əsasən fayl mənbələrinin səmərəli idarə olunması üçün NIO siniflərindən və siyahının özünü idarə etmək üçün Collections API -dən istifadə edir.

GetResource (String) burada izah edildiyi kimi mənbələri yükləmək üçün daha yaxşı bir yol ola biləcəyini də unutmayın.

Koleksiyonlar API -ni dizilər üzərində istifadə etmə xüsusiyyətləri haqqında da gözəl bir müzakirə var.

Faylınızda fərqli giriş növləri gözlədiyiniz təqdirdə Skaner yaxşıdır. Faylın "numbers.txt" adlandırıldığını nəzərə alsaq, hər şeyi bir oxu ilə edə bilərsiniz və faylı taramaq yerinə, istədiyiniz şəkildə əldə olunan kolleksiyanı idarə edə bilərsiniz.

Janosun cavabındakı bütün nöqtələri götürərək Java 8 -ə çevrilməklə sizdə var:

Hələ aralıq kolleksiyaya ehtiyacınız var, çünki hamısını istehlak etmədən axını geri çevirə bilməzsiniz.

Bu həll çox yavaş olduğu bilinən Tarayıcıyı itirir.

Dizinin sizə aid olmadığını düşünsək var istifadə etmək üçün bu cür problemlərin təbii həlli Stack istifadə etməkdir. Bir yığın, Son Giriş, İlk Çıxış olan bir məlumat quruluşudur.

Fikir budur ki, faylı bir anda oxuyursunuz (sizin vəziyyətinizdə nömrə) və hər bir elementi yığının üzərinə itələyin. Bütün maddələri oxuduqdan sonra onları nümayiş etdirmək üçün yığından çıxarın.

Bunu bir yığınla necə edəcəyinizə bir nümunə:

Yığın Stack & ltint & gt yerinə Stack & ltInteger & gt olaraq elan edilməsinin səbəbi intin Obyektdən miras qalmadığı mənasını verən ibtidai bir tip olmasıdır. Tam ədəd Obyektdən miras qalır, buna görə də bundan istifadə edirik. Orada bir az dovşan dəliyi var, amma daha dərinə getməyəcəyəm. Java -dakı digər ibtidai növlər (boolean, double, float və s.) Bənzər bir Obyekt tipinə malikdir (Boolean, Double, Float və s.).

Pop bir az çətindir. İki şey edir: yığının üstündəki obyekti qaytarır, bu obyekti yığından çıxarır. Bir elementi yığından sildiyindən, (! Numbers.empty ()) nəticədə yalan olacaq və döngəmiz öz axarını işlədəcək.

Bu yanaşmanın dezavantajı, pop funksiyası nömrələrinizi kənara atdığından, artıq nömrələrinizin olmamasıdır. Bunun öhdəsindən gəlməyin yolları hələ də var, ancaq bunu unutmamalısınız.


ArcGIS istifadə edərək morfoloji artefakt təsnifatı

Ənənəvi olaraq, arxeoloqlar mərmi nöqtələrini fərqli xüsusiyyətlərin olması və ya olmaması və ya qıvrım elementinin forması kimi bir çox fərqli morfoloji xüsusiyyətlərə əsaslanaraq təsnif edirlər. Bununla birlikdə, mərmi nöqtələri forma, ölçü və tikinti texnikasına görə çox fərqli ola bilər. Bu o deməkdir ki, onların təsnifatı çox vaxt bunu dəstəkləmək üçün az obyektiv məlumatlar olan bir fikir mövzusu ola bilər. 3D tarama və morfometrik analizin getdikcə artması ilə bu təsnifatlara statistik etibar səviyyəsini əlavə etmək mümkündür. Bu layihənin məqsədi, bu yeni təsnifat metodlarının ənənəvi təsnifat sxemlərinə nə dərəcədə uyğun olduğunu müəyyən etməkdir.

Bu layihə üçün məlumatlar Oregonun şimal -şərqindəki Pilcher Creek arxeoloji sahəsindən alınan bir sıra mərmilərdən ibarətdir. Ümumilikdə, sahədən əvvəlcə künc çentikli, mızraklı və gövdəli lansolat olmaqla 3 ayrı kateqoriyaya bölünmüş 44 tam mərmi nöqtəsi tapıldı. Nöqtələrin çoxu incə dənəli bazaltdan, kiçik bir faizi isə obsidiandan hazırlanmışdır. Bu nöqtələr əvvəlcə təxminən 8000 illik BP ilə əlaqədardır ki, bu da onları Oregon ştatının ən qədim əsərlərindən birinə çevirir.

Bu təhlil nəticəsində yaranan təsnifat qruplarının daha çox orijinal təsnifatla davam edəcəyi gözlənilir. və nöqtələri orijinal 3 kateqoriyadan çox hissəyə bölmək mümkün ola bilər. Bu layihə üçün kobud iş axını, strukturlaşdırılmış işıq taramasından istifadə edərək, yüksək keyfiyyətli əsərlərin 3D -ni yaratmaqla başlayır. Bu 3D taramalar daha sonra fərqli nöqtələri müqayisə etmək üçün istifadə edilə bilən çoxsaylı təsviri məlumatlar yaratmaq üçün bir sıra ArcGIS vasitələri kimi aparılır. Bütün nöqtələr üçün bu məlumatlar daha sonra artefaktları morfologiyasının oxşarlığına əsaslanaraq qruplaşdırmaq üçün kümelenme təhlili və əsas komponent təhlili ilə işlədilə bilər.

Bu cür analizlərin aparılmasının bir sıra üstünlükləri var. Birincisi, əsərlərin 3D taramalarının əsl fiziki əsərlərdən daha çox arxeoloji ictimaiyyətlə paylaşılmasının daha asan olmasıdır. Həm də bu artefaktları hesablana bilən və qərəzsiz təsnif etmək üçün bir yol təqdim edir. Gələcək araşdırma və müqayisə üçün də zəmin yaradır. Daha çox əsər 3 ölçülü skanerdən keçirildikdən və ictimaiyyətə təqdim edildikdən sonra, ölçüsü və dəqiqliyi əvvəlkindən daha böyük olacaq müqayisəli bir kolleksiya və təsnifat sistemi yaratmaq mümkün olacaq.

Arc və bir az QGIS ilə yaxşı bir təcrübə təcrübəm var. Python və ArcPy ilə rahatam. Bir az R bilirdim, amma istifadə etdiyim vaxtdan bir müddət keçdi.


Meşə bitki simulyatoru: Quruluşuna, məzmununa və tətbiqlərinə bir baxış

Forest Vegetation Simulator (FVS), idarəetmə qərarlarının qəbul edilməsini dəstəkləmək üçün ABŞ-da geniş istifadə olunan məsafədən asılı olmayan fərdi ağaclı meşə böyümə modelidir. Stendlər əsas proyeksiya vahididir, lakin məkan dairəsi minlərlə stend ola bilər. Müvəqqəti əhatə dairəsi, 5-10 illik bir qətnamədə bir neçə yüz ildir. Proqnozlar, giriş inventar məlumatlarında görünən mövcud şərtlərin xülasəsi ilə başlayır. FVS, yerli şərtlər üçün proqnozları dəyişdirmək üçün ölçülmüş böyümə nisbətlərindən istifadə edən özünü kalibrləmə xüsusiyyətinə malikdir. Komponent modelləri fərdi ağacların böyüməsini və ölümünü proqnozlaşdırır və əsas modelin uzantıları böcəklər, patogenlər və yanğın da daxil olmaqla narahatlıq agentlərini təmsil edir. Komponent modelləri coğrafi bölgədən asılı olaraq bölgəyə xas model variantları ilə fərqlənir. Fərqlər məlumatların mövcudluğu və mövcud modellərin tətbiq oluna bilməsi ilə əlaqədardır. Model, girişdə idarəetmə qaydalarının spesifikasiyasını dəstəkləyir, məsələn sıxlıq çox yüksək olduqda inceltme. Qaydalar digər faktorları əks etdirmək üçün uzadıla bilər. Məsələn, iqlim dəyişikliyinin iqlim dəyişikliyinə cavab olaraq artımın və ölümün necə dəyişəcəyini təyin edən qaydalar girərək stendin inkişafına təsiri.

Tətbiqlər tək stendlər üçün silvikultural reseptin hazırlanmasından landşaft və böyük regional qiymətləndirmələrə qədərdir. FVS ilə məşğul olan əsas məsələlər arasında meşə inkişafı, vəhşi təbiət mühiti, zərərvericilərin yayılması və yanacaq idarəçiliyi var. Proqnozlar, meşəli mühitlərin alternativ idarəetmə hərəkətlərinə necə reaksiya verəcəyini anlamaq üçün istifadə olunur. FVS ilə geniş miqyaslı meşə idarəetmə siyasəti öyrənilmişdir.

Modelin təqdim edildiyi 30 ildən bəri, inkişaf qrupu lazımi təkmilləşdirmələri gözlədi və təmin etdi və istifadəçilərlə işləmək və onları öyrətmək öhdəliyi götürdü. Adekvat bir istifadəçi interfeysinin olması və orijinal proqramlaşdırma dilinin davamlı istifadəsi bu modelin müvəffəqiyyəti üçün çox vaxt nəzərə alınmır.

Gələcək işlər, son biometrik üsulları tətbiq etməklə və geomorfologiyanı ölüm və artımla əlaqələndirən yeni məlumatlar daxil etməklə FVS -in təkmilləşdirilməsinə yönələcək. Modeli biofiziki prosesləri daha yaxından təmsil etmək üçün genişləndirmək və modeli, proqnozlaşdırılan iqlim dəyişikliyi ilə əlaqədar idarəetmə suallarına daha çox uyğunlaşdırmaq üçün uyğunlaşdırmaq da fokuslardır. FVS -ni digər modellərlə dinamik şəkildə əlaqələndirməyin yollarını təqdim etmək, əsas yeni imkanları təmin etmək üçün hazırkı strategiyamızdır.


2.3 Sıxılma və Arxivləşdirmə

Aşağıdakı bölmələr Oracle Database 12 c Release 1 (12.1) üçün yeni sıxılma və arxivləşdirmə xüsusiyyətlərini təsvir edir.

2.3.1 Arxivləşdirmə

Aşağıdakı bölmələr arxivləşdirmə xüsusiyyətlərini izah edir.

2.3.1.1 Veritabanı Sərtləşdirilməsi: Təhlükəsizliklə əlaqəli Tətbiq Masaları üçün Flashback Məlumat Arxivini (FDA) aktiv edin

Bu xüsusiyyətlər, bir tətbiqin təhlükəsizliyə həssas cədvəllərində tam tarix təmin etmək üçün Flashback Məlumat Arxivi (FDA) xüsusiyyətini genişləndirir. Bu xüsusiyyət, bir tətbiq üçün təyin edilmiş bütün cədvəllərdə FDA -nı aktivləşdirmək üçün tək bir əmr təmin edir və bu cədvəllər üçün güclü yoxlama ehtiyacını həll edir. Bu xüsusiyyət, idarəçiyə bir tətbiqdəki bütün təhlükəsizlik masalarını tək bir əmrlə yalnız oxunaqlı etməyə imkan verir.

Verilənlər bazası sərtləşdirilməsi, bir tətbiqdəki bütün təhlükəsizlik ilə əlaqəli cədvəllərin tarixçəsini izləməyi və bütün cədvəlləri və ya digər əl əməliyyatlarını keçmək üçün skriptlər yazmağa ehtiyac olmadan bu cədvəlləri lazım olduqda yalnız oxumaq üçün etməyi asanlaşdırır. Tətbiqə görə qruplaşdırılmış cədvəllər üçün Flashback Data Arxiv dəstəyinin genişləndirilməsi, bu cədvəllərdə edilən bütün dəyişiklikləri izləməyi və Oracle Flashback Query istifadə edərək tarixə daxil olmağı asanlaşdırır.

2.3.1.2 Flashback Data Archive Improvements

Several improvements have been made to Flashback Data Archive (FDA). Onlar:

The metadata information for tracking transactions including the user context is now tracked making it easier to determine which user made which changes to a table.

Hybrid Columnar Compression (HCC)

FDA can now be fully utilized on HCC compressed tables on Exadata and other Oracle storage platforms.

Import and export of history

Support for importing user-generated history into FDA tables has been added. Customers who have been maintaining history using some other mechanism, such as triggers, can now import that history into FDA.

2.3.2 General

The following section describes a new Flashback Data Archive feature.

2.3.2.1 Optimization for Flashback Data Archive History Tables

When using Flashback Data Archive to track changes on tables, you can now enable optimization of the corresponding history tables using the OPTIMIZE DATA clause when creating a Flashback Data Archive.

Optimization of Flashback Data Archive history tables provide better storage efficiency and better performance for flashback queries on the change history without additional intervention needed by the DBA.

2.3.3 Information Lifecycle Management

The following sections describe Information Lifecycle Management (ILM) features.

2.3.3.1 Automatic Data Optimization (ADO)

This feature provides declarative syntax for specifying Information Lifecycle Management (ILM) policies at the row, segment, and table level.

Database administrators can use this feature to automate the movement of data between different tiers of storage and between different levels of compression. This capability depends on the Heat Map feature which tracks access at the row level (aggregated to block-level statistics) and at the segment level.

2.3.3.2 EXECUTE_ILM Procedure

This feature provides a PL/SQL procedure to enforce ADO policies immediately or after a short time delay.

It is sometimes necessary to move data as quickly as possible from one tier to another, or from one compression level to another. The EXECUTE_ILM procedure provides the ability to do so, regardless of any previously scheduled ADO policies.

2.3.3.3 Heat Map

The Heat Map tracks modifications for individual rows (aggregated to the block level) and modifications and queries at the partition or table level.

Users can implement automated policy-driven data movement and data compression based on the information tracked in the Heat Map using the new ADO feature or using their own tools and scripts.

2.3.3.4 PL/SQL Interface for Managing ADO Policies

This feature provides a PL/SQL interface for managing ADO policies, including functions such as scheduling, priority and resource management.

Some customers need to implement complex Information Lifecycle Management (ILM) scenarios, by controlling when their ADO policies are actively moving data, and how much system resources are consumed with data movement operations. This feature provides the ability to manage ILM activities so that they do not negatively impact important production workloads.

2.3.3.5 Row-Level Compression Tiering

This feature provides the ability to specify ADO policies to implement compression at the row level within each table in a database. Compression is implemented when all rows in a database block qualify based on the policy being evaluated.

In combination with automatic segment-level compression tiering, this feature provides database administrators with fine-grained control over how the data in their database is stored and managed.

2.3.3.6 Segment-Level Compression Tiering

This feature provides the ability to specify ADO policies to implement compression at the segment level within each table in a database.

In combination with automatic row-level compression tiering, this feature provides database administrators with fine-grained control over how the data in their database is stored and managed.

2.3.3.7 In-Database Archiving

In-Database Archiving allows users and applications to set the archive state for individual rows. Rows that have been marked as archived are not visible unless the session is enabled to see archived data.

With In-Database Archiving, more data can be stored in production databases for a longer period of time without compromising application performance. In addition, archived data can be aggressively compressed to help improve query and backup performance. Updates to archived data can be deferred during application upgrades, greatly improving the performance of upgrades.

2.3.4 SecureFiles Enhancements

The following sections describe SecureFiles enhancements.

2.3.4.1 Enable PDML Operations on SecureFiles

Limitations have been removed in this release with regard to Parallel DML (PDML) support for SecureFiles LOBs.

This feature allows SecureFiles to leverage the performance and scalability benefits of the PDML features of Oracle Database.

2.3.4.2 Oracle Data Pump: Support SecureFiles LOB as Default

The impdp command line has a new parameter (and the PL/SQL DBMS_DATAPUMP package has a new option) that tells Oracle Data Pump to create all LOBs as SecureFiles LOBs. By default, beginning with Oracle Database 12 c Release 1 (12.1), all LOB columns are created as SecureFiles LOBs. However, Oracle Data Pump re-creates tables exactly as they existed in the exported database, so if a LOB column was a BasicFile LOB in the exported database, Oracle Data Pump attempts to re-create it as a BasicFile LOB in the imported database.

This feature allows the user to force creation of LOBs as SecureFiles LOBs and to migrate to the latest more performant feature.

2.3.4.3 SecureFiles is the Default for LOB Storage

In this release, SecureFiles is now the default for LOB storage when the compatible initialization parameter is set to 12.1 or higher.

The SecureFiles feature provides optimal performance for storing unstructured data in the database. Making SecureFiles the default for unstructured data helps ensure that the database is delivering the best performance possible when managing unstructured data.


Turtle Power: An ode to NetLogo

In this series, the authors take positions on coding platforms used in agent-based modelling. In this first instalment, Ben makes an argument in favour of NetLogo. In the next episode, Iza makes the case for Python.

Let’s start with a quote from the annals of archaeological modelling:

“…traditional inferential approaches fail to capture the dynamic and co-evolutionary nature of human settlement decisions as they respond to shifting resources and the presence and actions of other people. If only we had a laboratory to study the outcomes of various processes as they might play themselves out through hundreds of years on realistic landscapes!” – Kohler et al. 1996, Agent-Based Modeling of Prehistoric Settlement Systems in the Northern American Southwest

Is this radical thinking? In archaeology, our inferences are based upon assumptions about processes which may have occurred in the past that have influenced the character of the record we record today. But are these assumptions even warranted in the first place? Do the assumed combinations of processes necessarily generate the patterns we see in the record, and under all contingencies? What are needed are tools for evaluating the ramifications of our assumptions. Time machines will only give us a small, localised part of those long histories what we need is a “What-If Machine®”. This is why I became interested in computer simulation, and ultimately why I began learning NetLogo.

I chose NetLogo for my first forays into model-building because it was a) recommended in some of the literature of the day, b) didn’t require extensive reconfiguring of the file system, and c) FREE. In the realms of computer and social science, NetLogo has been the target of both commendation and contempt. While NetLogo continues to be used regularly in social sciences and increasingly in the natural sciences, there is a general undercurrent of disapproval from certain corners which have been detected by a number of us here at Simulating Complexity, and which spurred this series. Most of the arguments I hear against NetLogo focus on its limitations in terms of handling complex procedures, and that it just isn’t a “real” programming language. These criticisms are often vague and not lacking an elitist tone. But before I address these criticisms, I want to highlight some of the strengths of NetLogo for the purpose of building models as research tools. I think there are three primary reasons why people use NetLogo, and why its user base continues to grow:

Advantage #1 – Easy to learn

NetLogo IS dead simple to learn. Unless you’ve come up on another language, the syntax is very natural. This is why its legacy language, Logo, was chosen to teach schoolchildren the basics of programming. Additionally, there is pretty decent documentation. New books and seminars (see here and here, for examples) are appearing regularly that use NetLogo to teach simulation and agent-based modelling specifically. By my own account, I find that there are very few instances where I can’t find what I need in the NetLogo dictionary or programming guide. The documentation for many other ABM-specific platforms is typically terrible. and the documentation for more general languages can be downright incomprehensible for a novice. The centralisation of online user forums to places like Stack Exchange is helping to alleviate this, but this is also true for NetLogo as well.

Advantage #2 – Ease and speed of programming

There is a lot of stuff that NetLogo has intelligently built-in so that programming is easy and fast, not requiring a lot of overhead. As an early article (2005!) notes, a model that took up 950 lines in RePast could be written with only 50 lines in NetLogo. You don’t need to code your own GUI, defining gridspace only takes a couple of mouse clicks, and agents are an in-built feature. At our recent workshop at CAA 2014, entitled “One hour, one model”, we took a group of folks with varying degrees of programming skills and gave them a one-hour tutorial on modelling with NetLogo. Then groups worked together to build models of exchange, all groups producing within one hour a working model. It was heartening to see how NetLogo could be used in this way as a prototyping “tool to think with”.

Attendees share their models at the CAA2014 “One hour, One Model” session

There have been efforts to make other programming platforms more accessible. RePast developed its own bridging language, ReLogo, which could make use of the RePast libraries while being more user-friendly, even converting models written in NetLogo to ReLogo. There are now heaps of Python libraries aimed at ABM, which I’m sure my colleague Iza will tell you all about in Part 2. While some of these are starting to meet NetLogo on the ease-of-programming front, they’re currently lacking in documentation and user base.

Advantage #3 Ease of sharing

Because NetLogo doesn’t require specific system configurations (it’s a standalone), sharing NetLogo models is very easy. Once the programme is installed, one can open and run any NetLogo model. This includes those in online repositories, such as NetLogo’s own community library, and user generated libraries, such as O’Sullivan and Perry’s “Model Zoo” or Vidal’s Multiagent library, which provide dozens of downloadable examples of simple models that can be used as building blocks for dealing with common issues in modelling. Furthermore, models can be saved as Java applets, to be easily embedded in web pages and run using common software. This ability to quickly share ideas and modify code promotes an environment which gets closer to building and using models on the fly.

But all of these things have been said before. What about the criticisms of NetLogo? Are there real constraints posed by using NetLogo versus another language. Personally, the only place that I’ve truly felt limited in using NetLogo is the inability to run a single instance of NetLogo across multiple cores in a cluster. While BehaviorSpace, NetLogo’s in-built experiment automator, allows separate instances of the same experiment to be run on multiple cores, it is not yet possible to speed up NetLogo by spreading out the work a single simulation is doing across multiple cores. It would be nice to run faster models, but in the end, this seems like a reasonable trade-off, one that may end up being rectified. If a programmer runs into this issue, hopefully they’ll be versed enough by that time to transfer to model to a language that can be distributed across a cluster (or will know someone who can help).

If I were asked “Is there anything that can’t be done with NetLogo that can be done with other languages?”, I would have to honestly answer that I have not yet found that limit. For my purposes, which usually pertain to archaeology or anthropology more generally, I’ve been able to find a workable NetLogo solution to every problem I have ventured upon. This includes melding ABM with GIS and web-based datasets, and generating structured populations for demographic simulations. Colleagues of mine are using NetLogo regularly for network applications, and some folks are using it for good ol’ systems dynamics. I’ve even built a random name generator with it to help my wife and I choose a name for our daughter (in the end we settled on one the old fashioned way, but it worked! I’ll try to find the code..). And perhaps most exciting is that there are now add-ons for using genetic algorithms to search parameter spaces for optimal solutions. The fact is, NetLogo, through its built-in functionality and user-generated extensions, is capable of a wide range of programming.

But while that is the simple truth, the complicating fact is that there are things which NetLogo can do which are much, MUCH more easily and elegantly accomplished in other languages. The existence of NetLogo extensions to SQL, R, and other platforms is a patent recognition of this. But to argue in favour of one or the other is haggling over a matter of degrees: SHOULD you do it in another language? Ola bilər. CAN you do it NetLogo? Almost certainly. Asking whether one language is inherently superior to another is sort of like asking whether you can drive in a tank or a golf cart. Either can perform the task of driving from point A to point B. What matters is where you’re driving to, what you’re likely to encounter along the way, and most importantly, how comfortable you are behind the wheel.

In a roundabout way, this gets at the issue of whether our models should be complicated enough to necessitate military-grade computing power. Certainly in archaeology, our understanding of past human and hominid behaviour is so limited by the partial nature of the record and the complexity of social-cultural systems that building highly specific or complicated models laden with untested assumptions is probably unnecessary, and may end up being counterproductive (Premo 2010). There is a growing chorus of researchers in archaeology and other fields who are arguing for an emphasis on models which have highly explicit assumptions, grounded in well-established first principles, and represent key dynamics as simply as possible but no simpler (Grimm et al. 2005, O’Sullivan et al. 2012, Crema 2014). Using simple models allows us to more fully explore parameter spaces, and simpler programming environments such as NetLogo are more than suited to this task, if not purposely designed for it.

Some people may give you a hard time about using NetLogo, but the substance behind those claims devolves into little more than CS snobbery. It’s true we’ll never h4ck the Gibson writing programs in NetLogo. But in the end, we’re social scientists, not software engineers. What matters ultimately is the quality of the models we build. All the computing power in the world won’t save you if you can’t think about social science problems in modelling terms, and thinking in modelling terms is aided by having tools that can build models closer to the speed of thinking. NetLogo is a low threshold, high ceiling platform: it’s easy to pick up, and its limitations are few (Tisue and Wilensky 2004). It allows for rapid prototyping, which has long been a major hurdle for using computer simulation in the social sciences (Lake 2010). If our goal is building simple, shareable models for communicating ideas and aiding in thinking about real-world problems, then NetLogo makes sense because it addresses those issues specifically.

Crema, Enrico R. “A Simulation Model of Fission–Fusion Dynamics and Long-Term Settlement Change.” Journal of Archaeological Method and Theory 21, no. 2 (2014): 385–404. doi:10.1007/s10816-013-9185-4.

Grimm, V, E. Revilla, U. Berger, F. Jeltsch, W. M. Mooij, S. F. Railsback, H.-H. Thulke, J. Weiner, T. Wiegand, and D. L. DeAngelis. “Pattern-Oriented Modeling of Agent-Based Complex Systems: Lessons from Ecology.” Science 310, no. 5750 (2005): 987–91. doi:10.1126/science.1116681.

Lake, M. W., 2010. “The uncertain future of simulating the past.” In Simulating change: archaeology into the twenty-first century, pp.12-20.Salt Lake City: University of Utah Press.

O’Sullivan, D., J.D.A. Millington, G.L.W. Perry, J. Wainwright (2012) Agent-based models – because they’re worth it? p.109 – 123 In: Heppenstall, A.J., A.T. Crooks, L.M. See, M. Batty (Eds.) Agent-Based Models of Geographical Systems, Springer. doi: 10.1007/978-90-481-8927-4_6

Premo, L. S. , 2010. “Equifinality and explanation: the role of agent-based modeling in postpositivist archaeology.” In Simulating change: archaeology into the twenty-first century, pp. 28-37. Salt Lake City: University of Utah Press.

Tisue, S., & Wilensky, U., 2004, NetLogo: Design and implementation of a multi-agent modeling environment, Paper presented at the Agent 2004 conference, Chicago, IL, October 2004.

Featured image: Screenshot from the Scale-color example in the NetLogo model library