文档服务地址:http://47.92.0.57:3000/ 周报索引地址:http://47.92.0.57:3000/s/NruNXRYmV

Commit 9d6ecab2 by convivae

图像接口初步完成

parent b868ecb6
from peewee import *
from flask import Flask, request, jsonify
from flask_mongoengine import MongoEngine
# 配置 mongoengine 的信息
MONGODB_SETTINGS = {
"db": "test",
'host': 'localhost',
'port': 27017
}
db = MongoEngine()
# 注册组件
def register_extensions(app):
db.init_app(app)
# 图片标注的数据库
class Point(db.Document):
point_id = db.IntField(required=True)
X = db.FloatField(required=True)
Y = db.FloatField(required=True)
def to_json(self):
return {"point_id": self.point_id,
"X": self.X,
"Y": self.Y}
class Label(db.Document):
label_id = db.IntField(required=True)
label_name = db.StringField(required=True)
point_list = db.ListField(Point)
def to_json(self):
return {"label_id": self.label_id,
"label_name": self.label_name,
"point_list": [i.to_json for i in self.point_list]
}
class Image(db.Document):
relation_id = db.IntField(required=True)
# photo = db.FileField()
photo_url = db.StringField(required=True)
label_list = db.ListField(Label)
def to_json(self):
return {"relation_id": self.relation_id,
"photo_url": self.photo_url,
"label_list": [i.to_json for i in self.label_list]
}
# 图层标注的数据库
class Layer(db.Document):
layer_id = db.IntField(required=True)
layer_name = db.StringField(required=True)
layer_url = db.StringField(required=True)
def to_json(self):
return {"layer_id": self.layer_id,
"layer_name": self.layer_name,
"layer_url": self.layer_url}
class Fragment(db.Document):
relation_id = db.IntField(required=True)
layer_list = db.ListField(Layer)
label_list = db.ListField(Label)
def to_json(self):
return {"relation_id": self.relation_id,
"layer_list": [i.to_json for i in self.layer_list],
"label_list": [i.to_json for i in self.label_list]
}
# 地标的数据库
class LandmarkIntity(db.Document):
landmark_id = db.IntField(required=True)
name = db.StringField()
X = db.FloatField(required=True)
Y = db.FloatField(required=True)
def to_json(self):
return {"landmark_id": self.landmark_id,
"name": self.name,
"X": self.X,
"Y": self.Y}
class Landmark(db.Document):
relation_id = db.IntField(required=True)
layer_list = db.ListField(Layer)
landmark_list = db.ListField(LandmarkIntity)
def to_json(self):
return {"relation_id": self.relation_id,
"layer_list": [i.to_json for i in self.layer_list],
"landmark_list": [i.to_json for i in self.landmark_list]
}
class Result:
code: int
message: []
data: {}
def __init__(self, code, message, data):
self.code = code
self.message = message
self.data = data
def getImage(relation_list):
try:
image_list = [Image.get(Image.relation_id == r_id) for r_id in relation_list]
data = [image.to_json for image in image_list]
return Result(1, len(image_list), data)
except:
return Result(0, "some relation ids don't exist", {})
def saveImage(image_list):
try:
for item in image_list:
image = Image(relation_id=item['relation_id'],
photo_url=item['photo_url'],
label_list=item['label_list']
)
image.save()
return Result(1, len(image_list), {})
except:
return Result(0, "error", {})
def getFragment(relation_list):
try:
fragment_list = [Fragment.get(Fragment.relation_id == r_id) for r_id in relation_list]
data = [fragment.to_json for fragment in fragment_list]
return Result(1, len(fragment_list), data)
except:
return Result(0, "some relation ids don't exist", {})
def saveFragment(fragment_list, landmark_list):
try:
for item in fragment_list:
fragment = Fragment(relation_id=item['relation_id'],
layer_list=item['layer_list'],
label_list=item['label_list']
)
fragment.save()
for item in landmark_list:
landmark = Landmark(relation_id=item['relation_id'],
layer_list=item['layer_list'],
landmark_list=item['landmark_list']
)
landmark.save()
return Result(1, len(fragment_list), {})
except:
return Result(0, "error", {})
......@@ -3,14 +3,18 @@ from flask_cors import CORS
# from views.uploadDownload import uploadDownload
# from views.textAnnotation import textAnnotation
from views.user import user
from .views import user, imageAnnotation
from .Dao.Image import register_extensions
app = Flask(__name__)
CORS(app)
# app.register_blueprint(textAnnotation)
# app.register_blueprint(uploadDownload)
app.register_blueprint(user)
app.register_blueprint(imageAnnotation)
register_extensions(app)
@app.route("/")
......@@ -20,6 +24,3 @@ def hello_world():
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=9100)
import os
basedir = os.path.abspath(os.path.dirname(__file__))
\ No newline at end of file
basedir = os.path.abspath(os.path.dirname(__file__))
import json
from flask import Blueprint
from flask import request
from ..Dao import Image
image = Blueprint("image", __name__, url_prefix="")
@image.route("/image", methods=["GET"])
def get_image():
relation_list = request.args.get('relationList')
image = Image.getImage(relation_list)
res = {
'code': image.code,
'message': image.message,
'data': image.data
}
return json.dumps(res)
@image.route("/image", methods=["POST"])
def save_image():
image_list = request.args.get('imageList')
ret = Image.saveImage(image_list)
res = {
'code': ret.code,
'message': ret.message,
'data': ret.data
}
return json.dumps(res)
@image.route("/layer", methods=["GET"])
def get_fragment():
relation_list = request.args.get('relationList')
fragment = Image.getFragment(relation_list)
res = {
'code': fragment.code,
'message': fragment.message,
'data': fragment.data
}
return json.dumps(res)
@image.route("/layer", methods=["POST"])
def save_fragment():
fragment_list = request.args.get('layerList')
mark_list = request.args.get['markList']
ret = Image.saveFragment(fragment_list, mark_list)
res = {
'code': ret.code,
'message': ret.message,
'data': ret.data
}
return json.dumps(res)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment