Open geogra-geogra opened 1 month ago
ユーザーが指定するのはフォルダまでで,出力は"csmap.tif"という名前で出力されるようにしているのですが,yamamotoさんが書いてくださっている通り徐々に追加していく予定の部分です! issue追加ありがとうございます!
Sample
def setup_default_file_name(self):
arrive = "arrive" if self.arrive_boolean else "departure"
file_date = self.ui.standardTime.dateTime().toString("yyyyMMddHHmm")
self.layer_name = f"{arrive}_{file_date}" # layer_nameを設定
def load_isochrone_to_qgis(self, geojson_data):
self.setup_default_file_name()
file_path = self.mQgsFileWidget_output.filePath()
if "/" in file_path:
# ファイルパスの最後が'/'で終わる場合
if file_path.endswith("/"):
file_path += f"{self.layer_name}.geojson"
# ファイルパスに'/'があり、かつ'.'が含まれていない場合
elif "." not in file_path:
file_path += ".geojson"
with open(file_path, "w") as file:
file.write(json.dumps(geojson_data))
uri = file_path
vector_layer = QgsVectorLayer(uri, self.layer_name, "ogr")
else:
# ファイルパスに'/'が含まれない場合、ファイルパスを空にしてメモリレイヤを読み込む
self.mQgsFileWidget_output.setFilePath("")
uri = "Polygon?crs=epsg:4326&field=id:string&field=time:int"
vector_layer = QgsVectorLayer(uri, self.layer_name, "memory")
vector_layer.startEditing()
vector_layer.dataProvider().addAttributes(vector_layer.fields().toList())
vector_layer.updateFields()
features = QgsJsonUtils.stringToFeatureList(
json.dumps(geojson_data), vector_layer.fields()
)
vector_layer.dataProvider().addFeatures(features)
vector_layer.commitChanges()
if vector_layer.isValid():
QgsProject.instance().addMapLayer(vector_layer)
self.apply_categorized_symbology(vector_layer, "time")
else:
QMessageBox.critical(self, "Layer Error", "Failed to load layer")
@geogra-geogra iguchiさんとも相談させていただいて,ラスタはベクタと異なり一時レイヤとして出力するメリットがあまりないようなので,issueとしては残しますが,milestoneからは外します。
現在は、ディレクトリまでしか入れられない(ファイル名をこちらで勝手に決めることになっている) ディレクトリまで指定(こちらで勝手にファイル名決める) 何も指定されない(一時レイヤに保存) ファイル名まで指定(.tifだけ追加して出力) フルパスで指定(そのまま出力)
くらいの場合分けは必要になる。 他形式のファイルを読めるようにするのと同時に実施?