2

I am trying to import GeoJSON file with Python to my PostgreSQL db.

Here is full code:

with open('C:/xampp/htdocs/app/data/'+a) as file:
gj=geojson.load(file)
for feature in gj['features']:
    geom=feature['geometry']
    kc_broj=feature['properties']['BROJ_KC']
    ko_broj=feature['properties']['KO']
    ko_naziv=feature['properties']['K.O.']
    jls='RUGVICA1'
    id=str(ko_broj)+'_'+kc_broj
    cur.execute('INSERT INTO dkp (id,geom,ko_broj,kc_broj,ko_naziv,jls) VALUES (%s, ST_GeomFromText(ST_AsText(ST_GeomFromGeoJSON(%s))), %s, %s, %s, %s)', (id, geom ,ko_broj, kc_broj, ko_naziv, jls,))

And I get error :

psycopg2.ProgrammingError: can't adapt type 'Polygon'

Does anyone know how to fix this?

  • In the insert command some apostrophes missing. Print your Insert command from Python and try to execute in psql or pgadmin. – Zoltan Feb 3 at 13:38
  • @Zoltan can you underline where apostrophes are missing because when I copy this command into sql command window it works fine – Goran Grle Feb 3 at 14:04
  • If it works from the SQL prompt then my assumption was false. – Zoltan Feb 3 at 14:26
3

Insert statement seems OK. But you could try to replace this line:

geom=feature['geometry']

with

geom = (json.dumps(feature['geometry']))))

Because feature['geometry'] is an object and you should convert it to json.

And in insert statement you should set SRID for geometry if you have constraint in PostGIS. Like this:

ST_SetSRID(ST_GeomFromGeoJSON(%s), 4326)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.