Saturday, September 30, 2023

GeoPandas with Python and AutoCAD

GeoPandas is an open source project to make working with geospatial data in python easier, I installed the library via PyPi

Sample data files can be downloaded from here

 

import traceback
import geopandas
 
from pyrx import Ap, Ax, Db, Ed, Ge, Gi


def makePline(pnts, model, color):
    pline = Db.Polyline(pnts)
    pline.setColorIndex(color)
    model.appendAcDbEntity(pline)
 
@Ap.Command()
def doit():
    try:
        db = Db.curDb()
        model = Db.BlockTableRecord(db.modelSpaceId(), Db.OpenMode.kForWrite)

        gdf = geopandas.read_file("E:/townssurvey_shp/TOWNSSURVEY_ARC_GENCOAST.shp")
        #gdf = geopandas.read_file("E:/110m_cultural/ne_110m_admin_0_countries.shp")

        #do MultiPolygon first
        gdf0 = gdf.loc[gdf.geometry.geometry.type=='MultiPolygon']
        for mp in list(gdf0.geometry):
            for p in mp.geoms:
                makePline(list(p.exterior.coords), model, 1)

        gdf1 = gdf.loc[gdf.geometry.geometry.type=='Polygon']
        for p in gdf1.geometry:
            makePline(list(p.exterior.coords), model, 2)

        gdf2 = gdf.loc[gdf.geometry.geometry.type=='LineString']
        for p in gdf2.geometry:
            makePline(list(p.coords), model, 3)

    except Exception as err:
        traceback.print_exception(err)



'

 

PyRx Python for AutoCAD


No comments:

Post a Comment

TraceBoundary sample in Python for AutoCAD

    import traceback from pyrx import Ap , Db , Ed , Ge , Gi @ Ap . Command () def TB () -> None :     try :         db = Db . curD...