1. **ezdxf 라이브러리**:
   ezdxf는 DXF 파일을 파이썬에서 처리하기 위한 인기 있는 라이브러리 중 하나. 
   이 라이브러리를 사용하면 DXF 파일을 읽고 쓸 수 있으며, 그래픽 요소를 조작할 수 있다. 
   예제:
   설치 
   pip install ezdxf
=============================================================
import ezdxf

# Create a new DXF document
doc = ezdxf.new()

# Add a new modelspace (drawing area) to the DXF document
msp = doc.modelspace()

# Draw a line from (0, 0) to (10, 10)
msp.add_line(start=(0, 0), end=(10, 10))

# Draw a circle with center (5, 5) and radius 3
msp.add_circle(center=(5, 5), radius=3)

# Save the DXF document to a file
doc.saveas("example.dxf")

print("DXF file 'example.dxf' created successfully.")

===========================================================


파이썬에서 DXFwrite 예제

dxfwrite 라이브러리를 사용하여 Python에서 DXF 파일을 작성하는 예제. 
dxfwrite는 간단한 DXF 파일을 만들고 수정하는 데 사용할 수 있는 라이브러리 중 하나.

설치
pip install dxfwrite

예제

python

from dxfwrite import DXFEngine as dxf

# Create a new DXF document
dwg = dxf.drawing('example.dxf')

# Define some points
points = [(0, 0), (10, 0), (10, 10), (0, 10)]

# Create a polyline by connecting the points
dwg.add(dxf.polyline(points=points, close=True))

# Save the DXF document to a file
dwg.save()

print("DXF file 'example.dxf' created successfully.")
==========================================================

```python
import ezdxf

# DXF 파일 열기
doc = ezdxf.readfile("example.dxf")

# 모든 라인 엔티티 가져오기
msp = doc.modelspace()
for entity in msp.query('LINE'):
    start_point = entity.dxf.start
    end_point = entity.dxf.end
    print(f"Start Point: {start_point}, End Point: {end_point}")
```
=============================================================
2. **pythonnetezdxf 라이브러리**:
   pythonnetezdxf는 ezdxf 라이브러리의 확장판으로, 
   ezdxf와 비슷한 기능을 제공하며 몇 가지 편의 기능을 추가로 제공한다. 
   사용법은 유사하다.

3. **pyautocad 라이브러리**:
   pyautocad는 AutoCAD를 제어하기 위한 라이브러리로, 
   DXF 파일을 읽을 때 AutoCAD 소프트웨어가 필요하다. 
   이 라이브러리를 사용하면 AutoCAD를 자동화하고 DXF 파일을 읽을 수 있다.

4. **dxfwrite 라이브러리**;
   설치
     pip install dxfwrite
===
from dxfwrite import DXFEngine as dxf

# Create a new DXF document
dwg = dxf.drawing('example.dxf')

# Define some points
points = [(0, 0), (10, 0), (10, 10), (0, 10)]

# Create a polyline by connecting the points
dwg.add(dxf.polyline(points=points, close=True))

# Save the DXF document to a file
dwg.save()

print("DXF file 'example.dxf' created successfully.")
=====

Posted by TwoTen
l

XML과 JSON은 모두 데이터를 표현하고 교환하기 위한 형식이며,
각각의 특징과 장단점운 아래 와 같다.

**XML (Extensible Markup Language):**
- **장점:**
  1. **계층 구조**: XML은 계층 구조를 가짐으로써 복잡한 데이터 구조를 표현하는 데 용이하다.
  2. **설명력**: XML 태그는 데이터에 대한 설명을 포함할 수 있으며, 이로 인해 데이터 의미를 이해하기 쉬워진다.
  3. **DTD 및 XML 스키마**: DTD 및 XML 스키마를 사용하여 데이터의 유효성을 검사하고 데이터 일관성을 보장할 수 있다.
  4. **다양한 문자 인코딩**: XML은 다양한 문자 인코딩 방식을 지원하므로 국제화 및 지역화에 유용하다.

- **단점:**
  1. **불필요한 중복**: XML 문서는 종종 반복적인 태그와 불필요한 길이를 가질 수 있어 데이터 크기가 상대적으로 크다.
  2. **구문 복잡성**: XML 문서는 파싱 및 생성이 JSON에 비해 복잡하고 느릴 수 있다.
  
**JSON (JavaScript Object Notation):**
- **장점:**
  1. **간결함**: JSON은 간단한 데이터 구조로 데이터를 표현한다. 이로써 데이터 크기가 작아지고 처리가 빠르다.
  2. **가독성**: JSON은 데이터를 사람이 읽기 쉬운 형식으로 표현하며, 프로그래머들에게 친숙하다.
  3. **빠른 파싱**: JSON 문서는 파싱이 빠르며 대부분의 프로그래밍 언어에서 지원한다.
  4. **JavaScript 통합**: JSON은 JavaScript와 연동이 용이하며, 웹 애플리케이션에서 일반적으로 사용된다.

- **단점:**
  1. **계층 구조 제한**: JSON은 XML보다 덜 계층적이며 복잡한 데이터 구조를 나타내기 어려울 수 있다.
  2. **설명력 부족**: JSON은 태그에 대한 설명을 제공하지 않으며, 데이터 의미를 파악하기 어려울 수 있다.

간단한 데이터 교환 및 웹 서비스 통신에는 JSON이 효율적이며, 
복잡한 계층 구조 및 설명력이 필요한 경우에는 XML을 고려할 수 있다. 
JSON과 XML을 혼합하여 사용하거나, 데이터 변환 도구를 사용하여 두 형식 간에 데이터를 변환하기도 한다.

'여러이야기 > IT' 카테고리의 다른 글

Jevons paradox (제번스의 역설)  (0) 2025.01.28
Hadoop 및 Spark  (0) 2023.10.12
XML이란?  (0) 2023.10.12
파이썬에서 txt 파일 열고 쓰기  (0) 2023.03.01
파이썬 2차배열 내용을 json 파일에 저장, 읽기(230225)  (0) 2023.02.26
Posted by TwoTen
l

XML이란?

여러이야기/IT 2023. 10. 12. 09:22

XML(Extensible Markup Language)은 
데이터를 저장하고 전송하기 위한 마크업 언어의 한 형식이며, 
사람과 기계가 모두 이해하기 쉽고, 
다양한 종류의 데이터를 구조화하고, 
교환하기 위한 강력한 도구로 사용된다. 
주요 특징과 사용 사례로는,

1. **마크업 언어**:
   XML은 다른 데이터를 표현하는 데 사용되는 마크업 언어이다. 
     태그를 사용하여 데이터 요소를 정의하고 감싸며, 
     각 요소는 시작 태그(`<태그이름>`)와 종료 태그(`</태그이름>`)로 둘러싸여 있다.

2. **계층 구조**:
   XML 데이터는 계층 구조를 가진다다.
   각 요소는 다른 요소 내부에 중첩될 수 있으며, 
   이로 인해 데이터의 계층 구조를 잘 표현할 수 있다.

3. **유연성**:
   XML은 사용자가 자신만의 태그와 데이터 구조를 정의할 수 있는 확장 가능한 언어이다. 
   이는 다양한 도메인과 응용 분야에 맞게 데이터를 정의할 수 있는 장점을 갖고 있다.

4. **플랫폼 독립성**:
   XML은 플랫폼 독립적이며, 
   서로 다른 시스템 및 프로그래밍 언어 간에 데이터 교환을 쉽게 할 수 있도록 해준다.

5. **문서 기반 데이터 저장**:
   XML은 주로 구조화된 데이터를 저장하고 전송하기 위해 사용된다. 
   예를 들어, 구성 파일, 웹 서비스 응답, 설정 데이터, 인터넷에서 데이터 교환 등에 활발하게 사용된다.

6. **웹 서비스와 데이터 교환**:
   XML은 웹 서비스의 표준 데이터 형식 중 하나로 사용되며, 
   데이터를 클라이언트 및 서버 간에 교환할 때 주로 XML을 사용한다.

7. **DTD 및 스키마**:
   XML 문서의 구조를 정의하기 위해 Document Type Definition(DTD) 또는 XML 스키마를 사용할 수 있다. 
   이러한 정의는 XML 문서의 유효성을 검사하고 데이터의 일관성을 보장하는 데 도움이 된다.

8. **Well-Formed vs. Valid XML**:
   Well-Formed XML 문서는 XML의 기본 규칙을 준수하는 문서를 말하며, 
   Valid XML 문서는 DTD 또는 XML 스키마와 같은 정의를 따르는 문서를 말한다.

Posted by TwoTen
l

금요일 월차내고 뉴욕가서,
토요일(230520),
생애 처음으로 2시간 넘게 달렸다.
게다가 비까지 내려,
온 몸이 다 젖었다.
좀 더 열심히 운동해야겠다...



Posted by TwoTen
l

Posted by TwoTen
l

f = open(“test.txt”, ‘w’)
for j in range(0, 11): # 0 부터 시작해서 11개니까 0~10이다
   for i in range(0, 6): # 0 부터 시작해서 6개니까 0~5이다
    pixelx[j][i] = cX * i + j
      data1 = str(pixelx[j][i]) + '\t' 
      file1.write(data1)
   data1 = '\n'
   file1.write(data1)
file1.close()
file11 = open("./output/STDx.txt", 'r')
read = file11.read()
print(read)
======
결과
0       1       2       3       4       5
1       2       3       4       5       6
2       3       4       5       6       7
3       4       5       6       7       8
4       5       6       7       8       9
5       6       7       8       9       10
6       7       8       9       10      11
7       8       9       10      11      12
8       9       10      11      12      13
9       10      11      12      13      14
10      11      12      13      14      15

 

 

Posted by TwoTen
l

오늘 내 삶의 기네스 북을 경신했다.
쉬지 않고 2시간 달리기...
좀 더 다리운동 열심히 해야겠다...

Posted by TwoTen
l

import numpy as np

import json

#다음과 같이 2차배열에 각각의 값을 저장한 후에

pixelx = [[0 for col in range(6)] for row in range(11)]

cX = 1

for j in range(0, 11): # 0 부터 시작해서 11개니까 0~10이다

     for i in range(0, 6): # 0 부터 시작해서 6개니까 0~5이다

          pixelx[j][i] = cX * i + j

with open('./array2.json', "w") as file:

     json.dump(pixelx, file)

file.close()

with open('./array2.json', "r") as file:

     data = json.load(file)

file.close()

print(pixelx)

print(data)

print("data[0][0] = ", data[0][0])

print("data[0][1] = ", data[0][1])

print("data[3][3] = ", data[3][3])

==================================

실행결과

[[0, 1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12], [8, 9, 10, 11, 12, 13], [9, 10, 11, 12, 13, 14], [10, 11, 12, 13, 14, 15]]

[[0, 1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12], [8, 9, 10, 11, 12, 13], [9, 10, 11, 12, 13, 14], [10, 11, 12, 13, 14, 15]]

data[0][0] = 0

data[0][1] = 1

data[3][3] = 6

=================================================

array2.json파일 저장내용

[[0, 1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12], [8, 9, 10, 11, 12, 13], [9, 10, 11, 12, 13, 14], [10, 11, 12, 13, 14, 15]]

Posted by TwoTen
l

어느 조그마한 마을,

그곳의 알콜중독 시골 선배와 마당발같은 마음여린 후배의 대화...

조그마한 사회에서 혈육처럼 살아가며,

그 조그마한 세상을  떠나지 않고 살아가는 사람들...

굳이 넓은 세상을 알지 못해도...

굳이 다양한 삶을 알지 못해도...

길어야 살 수 있는 100년의 시간이 불행한 것은 아닐 것이다.

불행은 그곳에서 생기는 것이 아니고,

욕심이 넘친 사람들의 마음이 그 곳에 다다으면 생기는 것.

 

Posted by TwoTen
l

2023년 11월 5일 아침 8시에 하는 뉴욕마라톤을 신청했다.
추첨해서 당첨되면, 참가비가 거의 $300에 육박한다.
한번 보자...
당첨이 되는지...

Posted by TwoTen
l