I have a point and polyline shapefile and want to split lines using points — want to emulate the precise functionality of Split Line at Point tool (Data Management). I have ArcGIS 10.1 Basic level license and don't want to use third party tools — want to achieve this by using Basic level license geoprocessing tools available within ArcGIS 10.1. Any suggestions would be very much appreciative.
[GIS] Split line at a point with ArcGIS 10.1 Basic level license
arcgis-10.1arcgis-desktopgeoprocessing-framework
Best Answer
I have taken a slightly different approach than @radouxju. Here is an arcpy based solution I've written really quickly that will split your lines at points. It requires having two feature classes and each of them should have a unique ID field (to uniquely identify each point and each line).
The script logic is as follows: create several dictionaries to store pointID and lineID and each feature geometry in arcpy.Geometry() instance >> evaluate whether a point is located on the line and if yes, split it. I have not built in yet the searching algorithm that will look around for the closest point yet. The output child lines will inherit all the attributes their parents have (no attribute splitting logic exists either). The output feature class will contain only those lines which had points located on them. You can use simple Select By Location to select and merge with the rest of lines if needed.
The script uses heavily
arcpy.Geometry()
methods which turned out to be really fast and powerful. For instance, symmetrical difference method that can be initiated on a geometry object in any license, is exposed as a GP tool only in ArcGIS Desktop Advanced.The geometry of output lines will be practically identical to the source ones. The point located on a line will be buffered and then the result polygon is used to intersect the line and then resulted sublines are integrated to share the same vertex. The smaller buffer zone you create, the more precise the output splitted lines will be with the respect to the source line geometry. Running a buffer of just several cm zone will be more than enough for most applications (unless you are dealing with submillimeter precision data used in civil engineering for constructing bridges or something).