Veel

Kas kasutada funktsioonide Z ja M geomeetriat joongraafiku loomiseks ArcPy / Pythonis?

Kas kasutada funktsioonide Z ja M geomeetriat joongraafiku loomiseks ArcPy / Pythonis?


Olen Pythoni (v2.6.5) noob, kes üritab graafikutesse joonistada rea ​​3D-joonjooni. Siiani olen välja mõelnud:

# Importige süsteemimooduleid importige arcpy, os, sys, string arcpy importist env print "Moodulid imporditud". # Määra keskkonna seaded arcpy.env.overwriteOutput = True arcpy.env.workspace = r "X:  HaulRoad  SpatialData" arcpy.env.scratchWorkspace = r "X:  HaulRoad  SpatialData" print "Tööruumide komplekt". # Määra kohalikud muutujad infc = " HaulRd.gdb  Treatment  XS_2009BEBRklnTerr_interpZ_Rte_isect" graph_template = r " XS  XS_Seg02.55.grf" # malligraaf, mis loodi algselt 3D Analysti profiilitööriistaga, kohandatud täpsematel atribuutidel ja seejärel eksporditi grf-vormingusse print "Kohalike muutujate komplekt." #create huvipakkuvate väljade loend FC-st või huviväljade tabel = ['SegID', 'STA_calc', 'shape.Z', 'shape.M'] # looge tühi loend kursori loendi täitmiseks = [] print " Tabel ja tühi loend on loodud. " # kasutage otsingukursorit antud kirje ridade väljaväärtuse saamiseks = arcpy.SearchCursor (infc, "", "", "SegID; STA_calc") ridade reale: list.append (row.SegID) list.append (rida) .STA_calc) del rida, read trükitakse "Ajutisele tabelile lisatud read. Loend kustutatud." #remove duplices from list list = dict.fromkeys (list) list = list.keys () print "Duplikaadid eemaldatud." #create ajutine mälumuutuja memoryFC = "in_memory" + "" + "virtualFC" print "Memory Feature loodud." n jaoks loendis: arcpy.TableSelect_analysis (infc, memoryFC, "STA_calc =" + str (n)) out_Seg = väljad [0] out_STA = väljad [1] out_graph_name = n out_graph_pdf = r " XS  Script  XS_chart_Seg" + str (out_Seg) + str (out_STA) + ".pdf" graph_data = memoryFC # Ajutise funktsioonikihi loomine arcpy.MakeFeatureLayer_management (infc, "XS_lyr") # Looge graafik ajutisest funktsioonikihist graph = arcpy.Graph () # Määrake Graafiku pealkiri graph.graphPropsGeneral.title = "Segment" + out_Seg # Määrake graafi graph alapealkiri.graphPropsGeneral.subtitle = "Jaam" + out_STA # Määrake vasaku telje graafi pealkiri.graphAxis [0] .title = "Elevation (ft)" # Määrake alumise telje graafi pealkiri.graphAxis [2] .title = "Station (ft)" # Lisage graafikule graph.addSeriesLineVertical ("XS_lyr", shape.Z, shape.M) # Väljenda graafik, mis luuakse mälus arcpy.MakeGraph_management (graph_template, graph, out_graph_name) # Salvestage graafik PDF-vormingus arcpy.SaveGraph_management ( out_graph_name, out_graph_pdf, "MAINTAIN_ASPECT_RATIO", 800, 600) # puhas mälus arcpy.Delete_management ("in_memory") print "PDF-id loodud ja mälu puhastatud."

Mul on viga 82. real, kuhu lisan vertikaalsete joontega seeria. Eeldan, et probleem seisneb selles, et proovin joonistada väärtused, mis põhinevad tunnuste geomeetrial, mitte atribuutide tabeli väärtustel.

Kas see on võimalik ilma vahepealse teisendamiseta (nt tippude teisendamine punktideks)?

Lähteandmed on poliliini funktsiooniklass Z ja M väärtustega Arc 10.0 SP4 faili geoandmebaasis.


Minu üldine kavatsus on teada antud varasemas postituses: Kas luua ArcMapis dünaamiliste diagrammide pealkirjad? Olin ebaõnnestunud katsetes esineda kaarega.


IDLE-is saadud veateade on järgmine:
Traceback (viimane kõne viimati): fail "C: temp MakeGraphTest_v100_20140616.py", rida 82, graph.addSeriesLineVertical ("XS_lyr", shape.Z, shape.M) NameError: nime 'kuju' pole määratletud


shape.Z ja shape.M ei ole väljad, vaid need on kuju välja omadused. Kui soovite joonistada Z ja M, peaksite need eksportima uutele väljadele ja kasutama uusi väljadarcpy.graph.addSeriesLineVertical.


Hea geomeetria kogu Pythonis? [suletud]

Kas soovite seda küsimust paremaks muuta? Uuendage küsimust nii, et see oleks virna ületäitumise teema teema.

Otsin Pythoni geomeetriliste manipulatsioonide ja hindamiste jaoks head ja hästi arenenud teeki, näiteks:

  • hinnata kahe joone ristumist 2D-s ja 3D-s (kui see on olemas)
  • hinnata tasandi ja sirge lõikepunkti või kahe tasapinna ristumiskohta
  • hinnata minimaalset kaugust joone ja punkti vahel
  • leia ortonormaalne punktist läbiva tasapinnani
  • punktide komplekti pööramine, tõlkimine, peegeldamine
  • leida nelja punktiga määratletud kahetasandiline nurk

Mul on kõigi nende toimingute jaoks kogumik ja ma saaksin selle rakendada, kuid mul pole kahjuks aega, nii et ma tunneksin rõõmu raamatukogust, mis seda teeb. Enamik toiminguid on mängude jaoks kasulikud, seega olen kindel, et mõnda neist funktsioonidest võib leida ka mängukogudest, kuid ma eelistaksin mitte lisada funktsionaalsusi (näiteks graafikat), mida ma ei vaja.


Propiedaadid

Tagastab stressi kujul geomeetria JSON-esituse.

Tagastatud stringi saab Pythoni funktsiooni json.loads abil sõnastikuks teisendada.

Tagastab OGC geomeetria jaoks tuntud binaarse (WKB) esituse. See annab geomeetria väärtuse kaasaskantava kujutise baitide külgneva vooguna.

Tagastab OGC geomeetria jaoks tuntud teksti (WKT) esituse. See annab geomeetria väärtuse kaasaskantava kujutise tekstistringina.

Hulknurga tunnuse pindala. Kõigi muude funktsioonitüüpide jaoks tühi.

Tõsi tsentroid, kui see on funktsioonis või muul viisil funktsioonis, tagastatakse sildipunkt. Tagastab punktiobjekti.

Geomeetria ulatus.

Geomeetria esimene koordinaadipunkt.

Ruumiga eraldatud string kumera kere ristküliku koordinaadipaaridest.

Tõsi, kui selle geomeetria osi on rohkem kui üks.

Silt, kus silt asub. LabelPoint asub alati funktsioonis või selle sees.

Funktsiooni viimane koordinaat.

Lineaarse tunnuse pikkus. Punkt- ja mitmepunktiliste funktsioonide tüüpide puhul null.

Lineaarse tunnuse 3D pikkus. Punkt- ja mitmepunktiliste funktsioonide tüüpide puhul null.

Funktsiooni geomeetriliste osade arv.

Funktsiooni punktide koguarv.

Geomeetria ruumiline viide.

Funktsiooni raskuskese.

Geomeetria tüüp: hulknurk, joonjoon, punkt, mitmepunkt, mitmikmõõt, mõõde või märkused.


Methodenübersicht

Konstrueerib geomeetria piiri.

Ehitab hulknurga geomeetriast määratud kaugusele.

Konstrueerib geomeetria ja määratud ulatuse ristumiskoha.

Gibt an, ob die Basisgeometrie die Vergleichsgeometrie enthält.

sisaldab ist das Gegenteil von jooksul.

Selles illustratsioonis on näidatud ainult tõelised suhted.

Ehitab geomeetria, mis on minimaalselt siduv hulknurk, nii et kõik välised nurgad on kumerad.

Gibt an, ob die beiden Geometrien sich in einer Geometrie mit einem geringeren Shape-Typ überschneiden.

Zwei Polylinien kreuzen sich, wenn sie nur Punkte gemeinsam haben, von denen mindestens einer kein Endpunkt ist. Eine Polylinie und ein Polygon kreuzen sich, wenn sie im Inneren des Polygons eine Polylinie oder einen Punkt (für eine vertikale Linie) gemeinsam haben, die bzw. der nicht der gesamten Polylinie entspricht.

Selles illustratsioonis on näidatud ainult tõelised suhted.

Jagab selle geomeetria lõikejoonest vasakule ja paremale.

Polüliini või hulknurga lõikamisel jaguneb see lõikuri lõikejoonega ristuvasse kohta. Iga tükk klassifitseeritakse lõikurist vasakule või paremale. See klassifikatsioon põhineb lõikuri joone orientatsioonil. Sihtpolüliini osad, mis lõikuvat polüliini ei ristu, tagastatakse selle sisendjoonte tulemuseõiguse osana. Kui geomeetriat ei lõigata, jääb vasak geomeetria tühjaks (puudub).

Konstrueerib geomeetria, mis koosneb ainult baasgeomeetriale ainuomasest piirkonnast, kuid ei kuulu teise geomeetria ossa. Järgmine joonis näitab tulemusi, kui lähte geomeetriaks on punane hulknurk.

Gibt an, ob die Basis- und die Vergleichsgeometrie keine gemeinsamen Punkte aufweisen.

Zwei Geometrien überschneiden sich, wenn disjoint den Wert False zurückgibt.

Selles illustratsioonis on näidatud ainult tõelised suhted.

Tagastab minimaalse kauguse kahe geomeetria vahel. Kui geomeetriad ristuvad, on minimaalne kaugus 0.

Mõlemal geomeetrial peab olema sama projektsioon.

Näitab, kas baasi- ja võrdlusgeomeetria on sama kuju tüüpi ja määravad tasapinnal sama punktide kogumi. See on 2D võrdlus, ainult M ja Z väärtusi ignoreeritakse.

Selles illustratsioonis on näidatud ainult tõelised suhted.

Tagastab mõõtmistüübi abil funktsiooni ala.

Tagastab mõõtetüübi abil funktsiooni pikkuse.

Tagastab geomeetria kindla osa jaoks punktobjektide massiivi või massiivi, mis sisaldab mitut massiivi, ühe iga osa jaoks.

Ehitab geomeetria, mis on kahe sisendgeomeetria geomeetriline lõikepunkt. Erinevate kujunditüüpide loomiseks saab kasutada erinevaid mõõtmete väärtusi.

Kahe sama tüüpi geomeetria ristumiskoht on geomeetria, mis sisaldab ainult algsete geomeetriate kattumispiirkondi.

Kiiremate tulemuste saamiseks kontrollige enne ristumiskutset, kas need kaks geomeetriat on üksteisest lahus.

Tagastab selle joone alguspunktist mõõdiku in_point.

Gibt an, üb die Überschneidung der beiden Geometrien denselben Shape-Typ wie eine der Eingabegeometrien aufweist, aber keiner der Eingabegeometrien entspricht.

Selles illustratsioonis on näidatud ainult tõelised suhted.

Tagastab joone algusest määratud kaugusel asuva joone punkti.

Projitseerib geomeetriat ja rakendab soovi korral geotransformatsiooni.

Projekteerimiseks peab geomeetrial olema ruumiline viide ja UnknownCoordinateSystem. Meetodile edastatud uus ruumiline viitesüsteem määratleb väljundkoordinaatide süsteemi. Kui kumbki ruumiline viide pole teada, koordinaate ei muudeta. Z- ja mõõteväärtusi ei muudeta ProjectAs-meetodiga.

Leiab polükoonusel oleva punkti, mis on lähim sisepunktile, ja kauguse nende punktide vahel. Tagastab ka teabe selle joone külje kohta, kus in_point asub, ning kauguse mööda joont, kus toimub lähim punkt.

Tagastab selle geomeetria külge kinnitatud in_point põhjal uue punkti.

Ehitab geomeetria, mis on kahe geomeetria liit, millest lahutatakse nende geomeetriate ristlõige.

Kaks sisendgeomeetriat peavad olema sama kuju tüübid.

Gibt an, ob sich die Grenzen der Geometrien überschneiden.

Zwei Geometrien berühren sich, wenn die Schnittmenge der Geometrien nicht leer, die Schnittmengen der Innenbereiche jedoch leer ist. Ein Punkt berührt beispielsweise eine Polylinie nur, wenn der Punkt lagegleich mit einem der Endpunkte der Polylinie ist.

Selles illustratsioonis on näidatud ainult tõelised suhted.

Ehitab geomeetria, mis on sisendgeomeetriate hulga-teoreetiline liit.

Kaks ühendatud geomeetriat peavad olema sama tüüpi.

Gibt an, ob sich die Basisgeometrie internalhalb der Vergleichsgeometrie befindet.

Der inside -Operator stellt das Gegenteil von sisaldab dar.

Selles illustratsioonis on näidatud ainult tõelised suhted.


oma TikZ-i joonisele. Saad selle:

Ma ei saa aru, miks peate / tahate neid telje omadusi kasutada ainult selle pildi tegemiseks, nii et pidin pakkuma lihtsama vastuse, kasutades nurki, tsiteerides teeke. Selle lahenduse korral ei pea te ise arvutusi tegema, vaid pange sõlmed ja tõmmake nende vahel nurk.

Seda saate teha ka tkz-euclide teegi abil.

Pange tähele, et saate muuta nurga omadusi (kui te ei soovi, et see täidetaks jne)


Hopcroft-Tarjani graafiku tasapinnalisus ja raja lisamise meetod planaarsuse testimiseks

Tasapinnalised graafikud mängivad arvutusgeomeetrias paljudes probleemides keskset rolli. Keemiliste struktuuride isomorfismi määramist lihtsustatakse, kui struktuurid on tasapinnalised. Teine näide on see, kui insener soovib kiibile kinnitada komponentide võrgu. Komponendid on kujutatud juhtmetega ja lühist tekitamata ei tohi kaks juhtmest ristuda. Selle probleemi saab lahendada, kui käsitleda võrku graafikuna ja leida selle tasapinnaline kinnitus.

Allpool on toodud mõned vajalikud põhikontseptsioonid. Graafik G = (V, E) on tasapinnaline kui seda on võimalik joonistada tasapinnale nii, et ükski serv ei ristuks, välja arvatud lõpp-punktides. Sellist joonist nimetatakse a tasapinnaline kinnistamine. Üks tasapinnalise graafi näide on K4, täielik graafik 4 tipud (joonis 1).

Kõik graafikud pole tasapinnalised. Joonisel 2 on toodud näited kahest graafist, mis pole tasapinnalised. Neid tuntakse kui K5, täielik graafik viiel tipul ja K_, täielik kahepoolne graafik kahel suuruse 3. komplektil. Ükskõik millised keerdunud kõverad valitakse servade tähistamiseks, ebaõnnestub nende kinnistamise katse alati, kui viimast serva ei saa sisestada, ületamata mõnda muud serva, nagu illustreeritud joonisel.

Järjestikuste järjestikuste ühenduste järjestus u ja v nimetatakse a tee kohta G alates u kuni v. Tee on lihtnee kui kõik selle tipud on erinevad. Tee tipust iseendani on a suletud rada. Suletud tee alates v kuni v ühe või mitme servaga on a tsükkel kui kõik selle servad on erinevad ja ainus kaks korda ilmuv tipp on v. Me kasutame p: u* v selle tähistamiseks lk on tee u kuni v aastal G.

(Suunatud, juurdunud) puu T on suunatud juur ühe graafiga r, nii et iga tipp sisse T on kättesaadav alates r, ei sisene servi rja täpselt üks serv siseneb igasse teise tippu sisse T. Seos(v, w) on serv T-s ” tähistatakse tähisega vw. SeosT-s on tee v-st W-ni’’ Tähistatakse v* w. Kui vw, v on isa kohta w ja w on poeg kohta v. Kui v* w, v on an esivanem kohta w ja w on järeltulija kohta v. Iga tipp on oma esivanem ja järeltulija. Kui G on suunatud graaf, puu T on laiuv puu kohta G kui T on alamgraaf G mis sisaldab kõiki tippu G.

A alajaotus servast (x, y) graafi väärtus saadakse uue sõlme loomisega zja asendamine (x, y) uute servadega (x, z) ja (z, y). A alajaotus Graafi väärtus on mis tahes graafik, mille saab sellest jaotamisoperatsioonide järjestusega.

Kuna K5 ja K_ on mittetasapinnalised, on ilmne, et ka nende graafide alajaotised on mittetasapinnalised. Seetõttu graafik, millel on alamgraaf, mis on alajaotus K5 või K_ alamgraafina peab olema mittetasapinnaline. Öeldakse, et selline alamgraaf on homomorfne kuni a K_ või a K5. Kuulsad tulemused graafiteoorias on Kuratowski teoreem, mis ütleb, et alajaotise puudumine K5 või a K_ on piisav ka selleks, et graaf oleks tasapinnaline.

Üldiselt vajavad graafi algoritmid graafi uurimiseks süstemaatilist viisi. Planaarsuse testimise algoritmide poolt kasutatav kõige olulisem ja levinum tehnika on Esimene sügavus.

Esimene otsing (DFS) on meetod graafiku kõigi tippude külastamiseks G konkreetsel viisil. See algab meelevaldselt valitud tipust G juursõlmena ja jätkab liikumist praegusest tipust uurimata naabrusse. Kui praegusel tipul pole uurimata kõrvuti asetsevaid tippe, pöördub läbimine tagasi esimesse tippu koos uurimata külgnevate tippudega. Vaadake allpool toodud jooniseid DFS.

Servad, mida kasutab DFS tippude saavutamiseks G moodustavad ulatusliku puu T kohta G, helistas Palmipuuvõi DFS puu. Nii et otsimine kuidagi teisendab G suunatud graafiks. Juure T on tipp, millest visiiti alustatakse. Servad T nimetatakse puu servad, samal ajal kui ülejäänud servad G nimetatakse tagumised servad ja tähistatakse palmipuu katkendliku kõveraga. Esimene sügavusotsing on oluline, kuna palmide radade struktuur on väga lihtne.

Suunamata graaf G on ühendatud kui iga tipupaari jaoks u ja v, G sisaldab teed asukohast u kuni v. A ühendatud komponent graafi maksimaalne ühendatud alamgraaf.

An liigendtipp graafis on tipp, mille kustutamine graafi lahti ühendab. Graafik on kahesugused kui sellel puudub liigendtipp. A kahekordselt ühendatud komponent graafi maksimaalne kaheseotud alamgraaf.

Kuratowski alamgraaf on alamgraaf, millel on alajaotus K5 või K_ <3, 3>.

Kuratowski teoreem (Kuratowski [Ku30]) Lõplik graaf on tasapinnaline siis ja ainult siis, kui see ei sisalda Kuratowski alamgraafi.

Selle teoreemi tõestuse leidsid Dirac ja Schuster (1954) dokumendist [BM76]. Tõestus on üsna pikk, milles mõlemad põhilemmed ja teoreemi peamine tõestus kasutasid vastuolusid. Veel üks tõend selle kohta, et tippude arvul induktsiooni kasutamine on tingitud Thomassenist (1980) [GT87]. Kuigi see tõestus pole kõige lühem ega lihtsam, on see siiski väga valgustav, kuna see annab ka muid tulemusi tasapinnaliste kinnistamiste kohta. Üheks tulemuseks on Fary lause, et lihtsustatud graafi tasapinnalise kinnistamise servadeks saab valida sirgjooned (teised on Tutte ja Whitney teoreem). Pealegi teisendatakse Thomasseni tõestus tasapinnaliseks algoritmiks, mis on tippude arvus polünoom.

Naiivne algoritm tasasuse testimiseks

Võib küsida, kas ülaltoodud elegantne teoreem Kuratowski võiks kasutada kriteeriumina, et naiivsel viisil testida graafiku tasapinnalisust. Vastus on jaatav ja sellel teoreemil põhineval naiivsel algoritmil on eksponentsiaalne tööaeg, nagu allpool illustreeritakse.

The kraadi või valents tipu tipp on selle tipu langevate servade arv. Lase u olema kraadi tipp 2 graafikul G = (V, E)ja lase e1 ja e2 olla servad, mis juhtuvad u, ütle e1 = (u, v), e2 = (u, w). Graafik, mis saadi u”On oma tippude jaoks V/ ja selle servakomplekti jaoks E/ pluss uus serv nende vahel v ja w. Selle uue serva alajaotus tagurpidi silumise toimingu pööraks u. Siis on meil järgmine tulemus, mis on tagajärg Kuratowski teoreem:

Lase G olla graafik. Iga alamhulga jaoks E mille eemaldamisel jääb ainult üks mittetriviaalne komponent H, koostage "silumisgraafik" H ^ silendades järjest valentsi tipud 2 aastal H, välja arvatud viimane tipp, kui H on tsükkel. Kui mõned H ^ on isomorfne K5 või K_ siis graafik on mitteplaaniline, vastasel juhul G on tasapinnaline.

Kuna neid on 2 ^ servade alamhulka, mida arvestada, on sellel naiivsel algoritmil eksponentsiaalne tööaeg.

Hopcrofti ja Tarjani raja lisamise algoritm

Parim lähenemine tasapinnaprobleemile näib olevat katse konstrueerida etteantud graafi tasapinnaline esitus. Kui sellise esituse saab lõpule viia, on graafik tasapinnaline, kui mitte, siis graafik on mitteplaaniline. Üks selline algoritm on tee lisamise meetod Hopcroft ja Tarjan [HT74]. Nad näitasid esimesena, et tasasuse testimist saab teha lineaarse ajaga.

Enne algoritmi visandi andmist võiksime teha mõned märkused, et piirata vaadeldava graafi klassi G. On ilmne, et graafik on tasapinnaline siis ja ainult siis, kui kõik selle ühendatud komponendid on tasapinnalised. Seega võime seda eeldada G on ühendatud.

Graaf on tasapinnaline ainult siis, kui kõik selle kaks ühendatud komponenti on tasapinnalised ([Be64]). Pealegi võib artikulatsioonipunktid leida lineaarses ajas ([HT73], [Ta72]), seega piisab, kui kinnitada iga kaks ühendatud komponenti eraldi ja seejärel ühendada need nende külgnevate liigendtippude abil. Seetõttu võime seda eeldada G on kahepoolselt ühendatud.

Järgmine tulemus on Euleri tuntud teoreem:

(Euler 1750) Lase G olla ühendatud tasapinnaline graafik ja lase n, m, f tähistavad vastavalt tippude, servade ja tahkude arvu G. Siis n-m + f = 2.

Seda teoreemi saab tõestada servade arvu induktsiooniga m. Vajame järgmist järeldust:

Kui G on tasapinnaline graaf n (≥ 3) tipud ja m siis servad m ≤ 3n - 6.

Nüüd oleme valmis andma raja lisamise meetodi ülevaate.

Algoritmi visand

  • Loendage servade arv, kui | E | & gt 3 | V | - 6 siis on see mitteplaaniline (kasutades ülaltoodud tagajärgi liiga paljude servadega graafikutest vabanemiseks).
  • Rakendage DFS, teisendades graafiku palmipuuks T ja tippude nummerdamise.
  • Leidke puust tsükkel ja kustutage see, jättes lahti ühendatud tükkide komplekti (kasutage Auslanderi, Parteri, Goldsteini algoritmi, [AP61], [Go63]).
  • Kontrollige iga tüki ja algse tsükli tasasust (rakendades algoritmi rekursiivselt).
  • Määrab, kas tükkide manuseid saab kombineerida, et saada kogu graafiku kinnistamine.

Iga algoritmi rekursiivne kõne nõuab tsükli leidmist ja sellele ühe lihtsa tee lisamist korraga. Iga selline uus tee ühendab kahte vana tippu uute servade ja tippude kaudu (selleks on mõnikord terved tükid ümber pööratud, mõne joone ümber, selleks peame kasutama tuntud Jordaania kõverateoreem: lihtne suletud kõver jagab tasapinna täpselt kaheks ühendatud piirkonnaks). See seletab nime "tee lisamise meetod". See seletab ka DFS jagada graafik lihtsateks radadeks, mis võib kokku panna tsükliteks, mis on vajalikud tasasuse testimiseks. Võtan näiteks graafiku G ja DFS puu T joonisel fig 3 ülaltoodud illustreerimiseks.

Nüüd kaaluge esimest tsüklit c. See koosneb puu servade järjestusest, millele järgneb üks tagumine serv sisse T. Tippude nummerdamine on selline, et tipud on tsükli järgi numbrite järjekorras. Nii et selles näites tsükkel c on 1234581. Millal c on eemaldatud, G jaguneb mitmeks ühendatud tükiks. Iga tükk, mis ei kuulu tsüklisse, koosneb kas ühest tagumisest servast (v, w) (tükk s1 selles näites) või puu servast (v, w) pluss juurega alampuu w, pluss kõik alampuust viivad tagumised servad (tükk s2 sel juhul). Iga tükk võib minna kas „sisse“ või „väljast“ c poolt Jordaania kõverateoreem. Kui lisame tüki, tuleb teatud teisi tükke vajadusel (tasasuse säilitamiseks) seestpoolt väljapoole või vastupidi nihutada või vastupidi, kuni tükki ei saa lisada või kogu graafik on tasapinnale kinnitatud . See näide ei näita juhtumit „pööratud”, kuid võib viidata joonisele 4 ja 5 artiklis illustreerimiseks. Muudatus DFS aitab luua radade järjestuse selliselt, et kõik ühes tükis olevad teed genereeritakse enne suvalises tükis olevaid teid (s1 on üks tee ja s2 on sel juhul kolm rada) ja tükke uuritakse kahanevas järjekorras v kus v on tee alguspunkt nagu eespool.

Tükk peab olema täielikult sisse põimitud c Jordaania kõverateoreemi järgi. Segmendi kinnistamiseks (ütleme s2), leiame tee lk selles. Valime külje, ütleme vasakpoolne, kuhu kinnistada lk. Me võrdleme lk varem sisseehitatud tagumiste servadega, et teha kindlaks, kas lk saab manustada. Kui ei, siis liigutame tükki, mille tagumised servad blokeeruvad lk vasakult paremale. Kui lk saab kinnitada pärast tükkide liikumist, me kinnistame selle. Kui aga liigutame tükke vasakult paremale, peame võib-olla teisi tükke paremalt vasakule liikuma. Seega võib olla võimatu kinnistada lk. Kui jah, siis kuulutame graafi mitteplaaniliseks. Kui lk saab kinnistada, proovime ülejäänud osa kinnistada (s2), kasutades algoritmi rekursiivselt. Seejärel proovime kinnistada järgmise tüki. Selles näites tükk s2 tuleb tükkideks muuta s2 & # x27 nagu on näidatud joonisel 5.

Ehkki algoritmi sisemine töö põhineb sisendgraafiku tasapinnalise kujutise otsimisel, ei kirjeldatud, kuidas seda tegelikult tasapinnaliselt kinnitada. Kakskümmend aastat hiljem täitsid Mehlhorn ja Mutzel lünga, kirjeldades, kuidas testimise etapis koguda tasapinnalise kinnistamise jaoks vajalikku teavet, mida kaudselt kasutati tasapinna näitamiseks [MM96].

Tasapinnalistel graafikutel ja tasasuse testimisel on oluline roll arvutusgeomeetria mitmesugustes probleemides, sealhulgas geograafilised infosüsteemid, punktide asukoht. Näiteks integreeritud vooluahelate ülesehitus eeldab teadmist, millal võib vooluahel olla tasapinnal.

Sisse 1974, Hopcroft ja Tarjan [HT74] pakkusid välja esimese lineaarse aja planeerimiskatse algoritmi. See algoritm, mida nimetatakse ka tee lisamise algoritmiks, algab tsüklist ja lisab sellele ühe tee korraga. Algoritm on aga nii keeruline ja raskesti rakendatav, et nende läbimurdele järgnesid mitmed muud kaastööd. Näiteks umbes kakskümmend aastat pärast [HT74] aitasid Mehlhorn ja Mutzel [MM96] kirjutise selgitada, kuidas ehitada sisse graafik, mis on algse Hopcrofti ja Tarjani algoritmi järgi tasapinnaline.

[AP61] Auslander, L. ja Parter, S. V., Graafide külvamine tasapinnale, J. Math. ja Mech. 10, 517–523, 1961.

[Be64] Berge, C., Graafikute teooria ja selle rakendused, Alision Doig. Methuen, London, 1964.

[BM76] J. A. Bondy, U. S. R. Murty, Graafiteooria koos rakendustega, Põhja-Holland, 1982.

[Go63] Goldstein, A. J., Efektiivne ja konstruktiivne algoritm, mille abil saab kontrollida, kas graafi on võimalik lennukisse kinnitada, Graph and Combinatorics Conf., Lepingu nr NONR 1858- (21), 1963.

[GT87] Jonathan L. Gross, Thomas W. Tucker, Topoloogilise graafiku teooria, Wiley-Interscience, 1987.

[HT73] Hopcroft, J., ja Tarjan, R., Tõhusad algoritmid graafide manipuleerimiseks, Komm. ACM 16, 372–378, 1973.

[HT74] Hopcroft, John Tarjan, Robert E., Tõhus tasapinnaline testimine, Computing Machinery Associationi ajakiri 21 (4): 549–568, 1974.

[Ku30] Kuratowski, C., Sur le probleme des corbes gauches en topologie, Fundamenta Mathematicae 15, 271–283, 1930.

[MM96] Kurt Mehlhorn ja Petra Mutzel., Hopcrofti ja Tarjani tasasuse testimise algoritmi kinnistamisetapil., Algorithmica, 16: 233–242, 1996.

[Ta72] Tarjan, R., Esimene sügavus ja sirgjoonelise graafi algoritmid, SIAM J. Comput. 1, 2 146–159, 1972.


Graafidel põhinev 3D-ehituse semantiline segmentimine jätkusuutlikkuse analüüsiks

Pakutakse graafikapõhist meetodit 3D-hoonemudelite segmenteerimiseks semantiliselt sõltumatuteks komponentideks. Iga hoone jaoks loome kõigepealt graafiku (N, E), milles sõlmed N tähistavad 3D-hoone mudeli pinda ja servad E-standardit kahe pinnasõlme vaheliste jagatud joonte jaoks. Seejärel lihtsustatakse graafikut ühendatud koplanaarsete pindade liitmise teel. Järgmisena tuvastatakse lihtsustatud graafi liigenduspunktid ja eemaldatakse nende sõnalisus graafi segmenteerimiseks kahesugusteks komponentideks. Iga komponendi semantilised atribuudid tuvastatakse vastavalt selle geomeetrilistele omadustele ja ruumilisele suhtele teistega. Lõpuks kasutatakse linna jätkusuutlikkuse protsessi, näiteks energiatarbimise simuleerimiseks semantilise ja geomeetrilise teabega hoone komponente. Katsetulemuste kohaselt suudab pakutav meetod semantilisi andmeid tõhusalt eraldada LoD3 / LoD2 hoone mudelitest jätkusuutlikkuse simulatsioonivahendite jaoks, näiteks EnergyPlus.


Märksõnad

Xu Yang sündis Hiinas 1995. Praegu töötab ta Ph.D. kraad Hiinas Xuzhou linnas asuvas Hiina mäetööstuse ja tehnoloogia ülikoolis arvutiteaduse ja tehnoloogia osakonnas, kus ta uurib hajutatud mõõtesüsteeme, suurandmete ja andurite võrke.

Qiang Zhu töötab praegu Hiinas Xuzhou linnas Hiina mäe- ja tehnoloogiaülikooli arvutiteaduse ja tehnoloogia osakonnas magistrikraadi omandamise alal, kus ta uurib siseruumide lokaliseerimise ja andurite võrke.

Peihao Li sündis Hiinas 1994. Praegu töötab ta Hiinas Xuzhou linnas Hiina mäetööstuse ja tehnoloogiaülikooli arvutiteaduse ja tehnoloogia osakonnas magistrikraadi omandamiseks, kus ta uurib siseruumide lokaliseerimise ja andurite võrke.

Pengpeng Chen sündis Hiinas 1983. aastal. Ta omandas doktorikraadi. kraad 2011. aastal Hiina Ookeani Ülikooli arvutiteaduse ja tehnoloogia osakonnas, Qingdao, Hiina. Praegu on ta Hiina Xuzhou (Hiina) mäetööstuse ja tehnoloogia ülikooli arvutiteaduse ja tehnoloogia osakonna professor. Tema peamised uurimisvaldkonnad on sensorivõrgud, hajutatud mõõtesüsteemid, ookeani vaatlusvõrk ja andmete modelleerimine. Ta on avaldanud üle 20 akadeemilise töö olulistes akadeemilistes ajakirjades kodu- ja välismaal. Ta on olnud riikliku loodusteaduse fondi, Hiina järeldoktoriteaduse fondi, riikliku võtmelabori avatud fondi ja muude projektide eesistuja.

Qiang Niu sündis 1974. aastal Hiinas. Ta sai doktorikraadi kraad Hiina mäe- ja tehnoloogiaülikooli arvutiteaduse ja tehnoloogia osakonnast, Xuzhou, Hiina. Praegu on ta professor ja Hiina Xuzhou (Hiina) mäetööstuse ja tehnoloogia ülikooli arvutiteaduse ja tehnoloogia osakonna dekaan. Ta on ka Hiina söetööstuse miinide infotehnoloogia uurimiskeskuse asedirektor. Tema peamised uurimisvaldkonnad on intelligentne infotöötlus, tehisintellekt ja mustrituvastus, masinõpe ja andmekaevandamine ning muud uurimistöö aspektid. Ta on avaldanud üle 20 akadeemilise töö, mille on hankinud SCI.


Milliseid tarkvaraprogramme kasutatakse füüsika diagrammide joonistamiseks ja millised on nende suhtelised eelised?

Kahtlemata kasutavad inimesed füüsika skeemide koostamiseks mitmesuguseid programme, kuid paljud neist pole mulle tuttavad. Ma joonistan tavaliselt asju GIMP-is, mis on mõnes mõttes võimas, kuid on aeganõudev teha selliseid asju nagu ringide või noolte joonistamine, sest ma teen need primitiivsematest tööriistadest. Samuti on keeruline olla täpne.

Ma tean, et mõned inimesed kasutavad LaTeX-i, kuid ma pole päris kindel, kui mitmekülgne või lihtne see on. Ainsad muud tööriistad, mida tean, on Microsoft Paint ja Microsoft Office'i sisseehitatud tööriistad.

Niisiis, milliseid tööriistu füüsikud tavaliselt kasutavad? Millised on nende head ja halvad küljed (omadused, kasutusmugavus, kaasaskantavus jne)?

Otsin tööriista, millel on kõrge paindlikkus ja minimaalne õppimiskõver / arenguaeg. Kuigi ma tahaksin eelnevalt valmistatud kujundeid käsitsi joonistada ja lohistada, tahan ka täpsustades täpsustada kõverate ja kujundite täpseid asukohti võrranditega, kui mul on vaja paremat täpsust. Pealegi oleks minimaalne programmeerimisfunktsionaalsus kena lisavõimalus (s.t võime joosta läbi silmuse, mis tõmbab erineva parameetriga rea ​​ridu).

Palun soovitage mõnda tarkvara, kui need sobivad erinevates olukordades.


    Diagrammide (sh funktsioonide joonestamine) koostamiseks saab kasutada PSTricksi (soovitatav, kuna seda on kiirem ja lihtsam õppida, kuid samas võimas) või TikZ-i või teisi. Ülaltoodud kood on kirjutatud PSTricksis, peate laadima usepackage .

Määratlege lõuend, millele joonistate.

(-4.25, -1.25) tähistab teie lõuendi alumist vasakut punkti ja (4.25,2.25) paremat ülemist punkti.

Määrake joonistamise funktsioon.

Selles näites valisin y = pat (2x) +1/2.

PSTricksis saame punkti täpsustada mitmel viisil. (* & ltx-väärtus & gt ) on üks neist. Seega (* 1 < f (x) +0,5>) tähendab matemaatiliselt punkti (x, y), kus x = 1 ja y = f (1) +0,5.

Sisestage sisendfail xelatexi või kombineeritud järjestusega latex-dvips-ps2pdf.