홈>
먼저 플라스크 앱을 사용하고 있습니다. 이 코드를 사용하여 자바 스크립트에서 뒤로 데이터를 수집합니다.
@app.route('/getFormData', methods=['POST'])
def get_javascript_data():
params = request.json
sunElevation = params['sunElevation']
cloudCoverage = params['cloudCoverage']
thresholdNDVI = params['thresholdNDVI']
limitScene = params['limitScene']
city = params['city']
coords = params['coords']
data_search = passData(sunElevation, cloudCoverage, thresholdNDVI, limitScene, city, coords)
run_script = passData.calcul(data_search)
return jsonify(data_search.data_dict)
여기 내 계산법이 있습니다 :
class passData():
def __init__(self, sunElevation, cloudCoverage, thresholdNDVI, limitScene, city, coords):
self.sunElevation = sunElevation
self.cloudCoverage = cloudCoverage
self.thresholdNDVI = thresholdNDVI
self.limitScene = limitScene
self.city = city
self.coords = coords
self.coords.append(self.coords[0])
self.data_dict = [{'sunElevation':self.sunElevation,
'cloudCoverage':self.cloudCoverage,
'thresholdNDVI':self.thresholdNDVI,
'limitScene':self.limitScene,
'city':self.city,
'coords':self.coords
}]
def calcul(self):
main_script(self.sunElevation, self.cloudCoverage, self.thresholdNDVI, self.limitScene, self.city, self.coords)
return (print("traitement terminé"))
결국 ndvi 데이터는 테이블 이름 'ndvi_ + city'로 데이터베이스에 저장됩니다. 이 모든 것이 잘 작동하지만 결과를 시각화하기 위해이 데이터를 앞쪽으로 다시 보내려는 경우 사용하는 경로는 다음과 같습니다
@app.route('/ndviAuto')
def get_ndviAuto():
query = select([NdviAuto.ogc_fid.label('ogc_fid'), func.ST_AsGeoJSON(func.ST_Transform(NdviAuto.wkb_geometry,4326)).label('wkb_geometry')]).where(NdviAuto.wkb_geometry!=None)
dataQuery = db.session.execute(query).fetchall()
data_all = []
for ndvi in dataQuery:
ndvi = dict(ndvi)
data_all.append({
'type': 'Feature',
'properties':{
'id':ndvi['ogc_fid'],
},
'geometry':json.loads(ndvi['wkb_geometry'])
})
return jsonify(data_all)
그렇게하기 위해 NdviAuto 클래스를 다음과 같이 정의했습니다 :
class NdviAuto(db.Model):
__tablename__ = 'ndvi_' // + city ?
ogc_fid = db.Column(db.Integer, primary_key=True)
wkb_geometry = db.Column(Geometry(geometry_type='POLYGON', srid=32631))
내 문제는 올바른 테이블을 자동으로 얻기 위해 'city'값을 사용 하여이 클래스를 구성하는 방법을 모른다는 것입니다. 지금은 데이터를 다시 보내는 경로가 작동하지만 매번 테이블 이름을 변경해야합니다. postgreSQL 데이터베이스를 사용합니다.
- 답변 # 1
관련 자료
- class - 파이썬에서 다른 속성을 가진 속성을 정의하는 방법이 있습니까?
- python - 다른 py 파일에서 사용자 지정 클래스 가져 오기
- Django Python 다른 sessionid 쿠키에서 데이터를 가져 오는 방법은 무엇입니까?
- 한 Python 버전에서 다른 버전으로 패키지 변경
- python tkinter 항목 변수가 정의되지 않았습니다
- python 사전 - dict의 모든 키에 대한 목록을 만들고 dict의 모든 값에 대해 다른 목록을 만듭니다
- design patterns - 파이썬 라이브러리에서 사용자 정의 함수를 호출하는 좋은 방법은 무엇입니까?
- 새 Python 시간대 정의
- django - python - 'set_password'이름이 정의되지 않았습니다
- oop - 파이썬 - 하위가 아닌 다른 클래스의 클래스 속성에 액세스
- variables - 다른 Python 파일의 다른 함수에서 계산 된 함수 값을 어떻게 사용할 수 있습니까?
- sqlalchemy - 돌아온 다음 파이썬에서 다른 함수가 끝날 때까지 기다립니다
- module - 파이썬 '수학'이 정의되지 않았습니다
- 매개 변수 전달을 사용하여 다른 python 스크립트에서 python 스크립트 반복
- Pandas Dataframe Python | 복사 한 데이터 프레임의 다른 셀과 셀을 비교하는 방법은 무엇입니까?
- SFTP 서버의 Python 파일을 다른 폴더로 이동
- python - 팬더의 다른 열에 의해 빈이 정의되는 동안 한 열의 평균 히스토그램을 그리는 방법
- numpy - 파이썬에서 이미지를 읽고 정의 된 픽셀 순서로 다시 쓸 수있는 방법
- python - "randomcall"이라는 자체 함수 정의
- 다른 파이썬 파일에 대한 오류없이 가져올 수없는 이유는 무엇입니까? ("부분적으로 초기화 된 모듈에는 속성이 없습니다")
관련 질문
- python : SQLModel(sqlalchemy + pydantic)과 함께 FastAPI에서 DateTimeTZRange를 사용하는 방법은 무엇입니까?
- python : sqlalchemy.exc.NoSuchModuleError:플러그인을 로드할 수 없음: sqlalchemy.dialects:postgres를 사용하여 Heroku postgres 데이터베이스에 액세스할 때
- python : flask-migrate는 모델을 감지하지 못합니다.
- python : SQLAlchemy가 이상한 데이터를 반환합니다.
- python : PostgresQL 및 pyodbc에서 RETURNING 절이 있는 UPDATE 문
- postgresql : sqlalchemy 조건 결과 `거짓`
- python : '데이터' 유형을 조정할 수 없습니다.
__tablename__
를 수정할 수 없습니다 선언적 클래스가 작성된 후 속성 또는 다른 말로 할 수는 있지만 아무런 영향을 미치지 않습니다. 와이즈 비즈 오브젝트가 이미 작성되어Table
에 지정되었습니다. 속성 및 메타 데이터. 선언적__table__
또한 생성 된 클래스의 레지스트리를 유지하므로 다른 테이블로 클래스를 재정의 할 때 경고가 표시되며 문자열 클래스 이름을 사용하는 미래 관계 등이 재정의를 나타냅니다. 일반적으로 항상 그런 것은 아니지만 동적 테이블 이름을 갖는 것은 DB 디자인에 문제가 있음을 나타냅니다.동적 테이블이 이미 있으므로 경량
Base
를 사용할 수 있습니다. 그리고table()
완전 선언 클래스 또는column()
대신 구문 인스턴스. 올바른 경량 테이블을 생성하는 도우미 함수를 만들고 다음을 사용하십시오.그러면보기 :
@app.route('/ndviAuto') def get_ndviAuto(): ndvi_table = ndvi_auto('some_city') query = select([ndvi_table.c.ogc_fid, func.ST_AsGeoJSON( func.ST_Transform( ndvi_table.c.wkb_geometry, 4326 ) ).label('wkb_geometry')]).\ where(ndvi_table.c.wkb_geometry != None) result = db.session.execute(query) data = [{'type': 'Feature', 'properties': { 'id': ndvi.ogc_fid }, 'geometry': json.loads(ndvi.wkb_geometry)} for ndvi in result] return jsonify(data)