Suite

Densifier la polyligne pour générer des points à des distances définies à l'aide d'ArcMap ?

Densifier la polyligne pour générer des points à des distances définies à l'aide d'ArcMap ?


J'ai une polyligne sur laquelle je souhaite créer des points à l'aide d'ArcMap 10.2.2. J'ai utilisé la méthodologie suggérée dans Création de séries de points le long d'une polyligne ?, mais je ne semble pas être en mesure de générer les points aux intervalles définis que je souhaite. Par exemple, densifier la polyligne en utilisant 500m et 250m, puis convertir les sommets en points en utilisant le Des sommets d'entités aux points outil), semble générer le même nombre de points (540) pour chaque distance de densification lors de l'utilisation de l'option "Both_Ends" dans le Des sommets d'entités aux points outil:

250m - Les deux extrémités :

500m - Les deux extrémités :

Avec le même nombre de points dans chaque couche de points générée. Et en utilisant l'option 'Tous' dans le Des sommets d'entités aux points l'outil génère beaucoup trop de points (5250) :

Mon objectif final est d'avoir des espaces de points tous les 250 m ou 500 m le long de chaque branche de cette polyligne, en m'installant enfin sur la conversion polyligne en point qui génère un nombre raisonnable de valeurs.


Voyez si vous pouvez modifier cela un petit peu en fonction de votre objectif

importer arcpy, os, traceback, sys depuis arcpy importer env env.overwriteOutput = True infc = arcpy.GetParameterAsText(0) routeid = arcpy.GetParameterAsText(1) outOption=arcpy.GetParameterAsText(2) step = float(arcpy.GetParameterAsText(3 )) outp=arcpy.GetParameterAsText(4) # DÉRIVER LE DOSSIER DE SORTIE DE LA SORTIE FC # Définir l'espace de travail arcpy.env.outputMFlag = "Disabled" outFolder,theFile=os.path.split(outp) env.workspace = outFolder d=arcpy. Describe(infc) SR=d.spatialReference essayez: def showPyMessage(): arcpy.AddMessage(str(time.ctime()) + " - " + message) point = arcpy.Point() arcpy.CreateFeatureclass_management(outFolder, theFile, "POINT", "", "DISABLED", "DISABLED", SR, "", "0", "0", "0") arcpy.AddField_management(theFile, routeid, "TEXT", "", "", 25) arcpy.AddField_management(theFile, "CHAINAGE", "DOUBLE") # définit le nombre de formes result=arcpy.GetCount_management(infc) nF=int(result.getOutput(0)) arcpy.SetProgressor("step", "" , 0, nF,1) # Crée un curseur de recherche sur la polyligne d'entrée curT = arcpy.da.Inse rtCursor(theFile,["[email protected]",routeid,"CHAINAGE"]) avec arcpy.da.SearchCursor(infc, ("[email protected]",routeid)) en lignes : pour feat,theID en lignes : theLength=feat.length m=int(theLength/step) if outOption=="Chainage": Chainages=[] for i in xrange(m+1): dL=step*i Chainages.append(dL) Chainages.append(theLength) elif outOption= ="Ends": Chainages=[0, theLength] elif outOption=="Middle": Chainages=[theLength/2] pour aL dans Chainages: theP=feat.positionAlongLine (aL) point.X=theP.firstPoint.X point .Y=theP.firstPoint.Y pnt=arcpy.PointGeometry(point,SR) ## theRow=(theP,theID,aL) theRow=(pnt,theID,aL) curT.insertRow(theRow) arcpy.SetProgressorPosition() del lignes, curT except NameError, theMessage : arcpy.AddMessage (theMessage) except : message = "
*** PYTHON ERRORS *** " ; showPyMessage() message = "Informations de suivi Python : " + traceback.format_tb(sys.exc_info()[2])[0] ; showPyMessage() message = "Informations d'erreur Python : " + str(sys.exc_type)+ " : " + str(sys.exc_value) + "
" ; showPyMessage()

Paramètres:


J'ai trouvé que cet outil utilisateur fonctionnait parfaitement:

https://gis.stackexchange.com/a/162339/28864

C'était la seule solution que je pouvais trouver pour travailler.